如何以编程方式填充现有的PDF文档

Si8

我有一个不是使用Adobe LifeCycle Designer创建的PDF文档。我想要做的是预先填写文档中的常见字段。

我已经研究了使用iTextSharp和PDFSharp提供给我的许多选项,但是不确定如何正确使用它。

我最近碰到了这篇文章:FillPDF,它有一个很好的文档,但是与我创建的内容不匹配。

我也在阅读有关可以在VS中导入并使用的iTextSharp的信息,但是我不确定从哪里开始。我看到了很多教程,但是都没有描述如何开始。

请帮忙...

维科

我最近与itextsharp合作完成了一个大型项目

http://www.mikesdotnetting.com/Article/88/iTextSharp-Drawing-shapes-and-Graphics http://www.mikesdotnetting.com/Article/81/iTextSharp-Working-with-Fonts

这是一些可以帮助您入门的东西

但就从pdf读取然后输出回来而言,您将需要一些正则表达式来帮助您。

这是我拥有的示例代码之一(这会在每个新页面事件上创建一个页眉或页脚)

using CMS;
using CMS.Tags;
using CMS.Pages;
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;
using System.Globalization;
using System.Net;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using iTextSharp.text;
using iTextSharp.text.html;
using iTextSharp.text.xml;
using iTextSharp.text.pdf;
using iTextSharp.text.pdf.draw;
using System.IO;
using System.Text.RegularExpressions;
using System.Text;
using System.util;

public class pdfPage : iTextSharp.text.pdf.PdfPageEventHelper
{
public override void OnEndPage(PdfWriter writer, Document doc)
    {
        PdfContentByte cb = writer.DirectContent;
        cb.SetLineWidth(1f);
        cb.SetCMYKColorStroke(66, 59, 57, 38);
        cb.MoveTo(30, 55);     
        cb.LineTo(doc.PageSize.Width - 30 , 55);     
        cb.Stroke();
        cb.MoveTo(185, 80);
        cb.LineTo(185, 25);
        cb.Stroke();

        ColumnText ct = new ColumnText(cb);
        BaseFont bfTimes = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, false);
        Font times = new Font(bfTimes, 10);
        times.SetColor(90, 90, 90);
        ct.SetSimpleColumn(new Phrase("text text", times), 60, 60, 175, 78, 15, Element.ALIGN_MIDDLE);
        ct.Go();
        times.SetColor(1, 73, 144);
        ct.SetSimpleColumn(new Phrase("text textn", times), 60, 38, 175, 55, 15, Element.ALIGN_MIDDLE);
        ct.Go();
        times.SetColor(90, 90, 90);
        ct.SetSimpleColumn(new Phrase("text here", times), 190, 60, doc.PageSize.Width - 32 , 78, 15, Element.ALIGN_RIGHT);
        ct.Go();
        times.SetColor(90, 90, 90);
        ct.SetSimpleColumn(new Phrase("text here", times), 190, 38, doc.PageSize.Width - 32 , 55, 15, Element.ALIGN_RIGHT);
        ct.Go();
    }
}

这是我的开始pdf的代码的一部分

using (var ms = new MemoryStream())
        {
            using (var doc = new Document(PageSize.LETTER, 220f, 30f, 115f, 100f)){

                try
                {
                  pdfPage page = new pdfPage();
                  PdfWriter writer = PdfWriter.GetInstance(doc, ms);
                  writer.PageEvent = page;
                  doc.Open();

                iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(RESOURCE);
                img.ScalePercent(49f);
                //img.Width = doc.PageSize.Width;
                //img.Alignment = iTextSharp.text.Image.ALIGN_CENTER;
                img.SetAbsolutePosition(-8, 
                    doc.PageSize.Height - 180.6f);
                doc.Add(img);

这是我的输出代码(作为直接从服务器创建的下载pdf *未保存在服务器上)

}
                catch (Exception ex)
                {
                  //Log error;
                }
                finally
                {
                  doc.Close();
                }

            }
            Response.Clear();
              //Response.ContentType = "application/pdf";
              Response.ContentType = "application/octet-stream";
              Response.AddHeader("content-disposition", "attachment;filename= Company " + namefile + ".pdf");
              Response.Buffer = true; 
              Response.Clear();
              var bytes = ms.ToArray();
              Response.OutputStream.Write(bytes, 0, bytes.Length);
              Response.OutputStream.Flush();

        }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Ruby on Rails以编程方式填写现有的可填充PDF文件

来自分类Dev

使用Ruby on Rails以编程方式填写现有的可填充PDF文件

来自分类Dev

如何以编程方式将UINavigationController添加到现有的UIViewController

来自分类Dev

如何以编程方式将UINavigationController添加到现有的UIViewController

来自分类Dev

如何以编程方式添加多个LinearLayout,与现有的相同

来自分类Dev

如何以干净的方式派生现有的Meteorite包?

来自分类Dev

如何以编程方式将数据库添加到现有的Always On可用性组(AOAG)?

来自分类Dev

如何以编程方式使用IVsSolution.CreateProject重新加载现有的已卸载c#项目

来自分类Dev

如何以编程方式使用IVsSolution.CreateProject重新加载现有的已卸载c#项目

来自分类Dev

如何使用iText以编程方式将页眉和页脚添加到现有的基于表单的PDF中?

来自分类Dev

如何以编程方式在select2多选择下拉菜单中添加其他选择,而不会丢失现有的选定项目

来自分类Dev

如何以最近的bash完成方式重复使用现有的完成功能?

来自分类Dev

如何以编程方式删除其他用户拥有的触发器?

来自分类Dev

如何以编程方式关闭与数据库的所有现有连接

来自分类Dev

如何在Drupal中以编程方式更新现有的已提交Web表单提交?

来自分类Dev

如何以编程方式更改linux服务器上的现有stl(立体摄影)文件?

来自分类Dev

如何以编程方式修改现有apk中Assets文件夹中的数据?

来自分类Dev

如何以编程方式创建具有内容的Google文档电子表格?

来自分类Dev

在iTextSharp中,如何在创建新文档时包括现有的PDF

来自分类Dev

如何以编程方式修改Open / Libre Office odt文档?

来自分类Dev

如何以编程方式将文档上传到SharePoint?

来自分类Dev

如何以编程方式在VB.net中填充DataGridViewComboBoxColumn?

来自分类Dev

如何以编程方式设置ListView的顶部填充?

来自分类Dev

C#WPF如何以编程方式填充我的DataGrid

来自分类Dev

如何以编程方式填充开关盒值?

来自分类Dev

如何以编程方式在VB.net中填充DataGridViewComboBoxColumn?

来自分类Dev

在xaml中创建的DataGrid列-如何以编程方式填充?

来自分类Dev

如何以编程方式填充WPF多列TreeView?

来自分类Dev

如何使用 C 语言的 openLDAP 库 API 以编程方式修改现有的 Open LDAP 对象类?

Related 相关文章

  1. 1

    使用Ruby on Rails以编程方式填写现有的可填充PDF文件

  2. 2

    使用Ruby on Rails以编程方式填写现有的可填充PDF文件

  3. 3

    如何以编程方式将UINavigationController添加到现有的UIViewController

  4. 4

    如何以编程方式将UINavigationController添加到现有的UIViewController

  5. 5

    如何以编程方式添加多个LinearLayout,与现有的相同

  6. 6

    如何以干净的方式派生现有的Meteorite包?

  7. 7

    如何以编程方式将数据库添加到现有的Always On可用性组(AOAG)?

  8. 8

    如何以编程方式使用IVsSolution.CreateProject重新加载现有的已卸载c#项目

  9. 9

    如何以编程方式使用IVsSolution.CreateProject重新加载现有的已卸载c#项目

  10. 10

    如何使用iText以编程方式将页眉和页脚添加到现有的基于表单的PDF中?

  11. 11

    如何以编程方式在select2多选择下拉菜单中添加其他选择,而不会丢失现有的选定项目

  12. 12

    如何以最近的bash完成方式重复使用现有的完成功能?

  13. 13

    如何以编程方式删除其他用户拥有的触发器?

  14. 14

    如何以编程方式关闭与数据库的所有现有连接

  15. 15

    如何在Drupal中以编程方式更新现有的已提交Web表单提交?

  16. 16

    如何以编程方式更改linux服务器上的现有stl(立体摄影)文件?

  17. 17

    如何以编程方式修改现有apk中Assets文件夹中的数据?

  18. 18

    如何以编程方式创建具有内容的Google文档电子表格?

  19. 19

    在iTextSharp中,如何在创建新文档时包括现有的PDF

  20. 20

    如何以编程方式修改Open / Libre Office odt文档?

  21. 21

    如何以编程方式将文档上传到SharePoint?

  22. 22

    如何以编程方式在VB.net中填充DataGridViewComboBoxColumn?

  23. 23

    如何以编程方式设置ListView的顶部填充?

  24. 24

    C#WPF如何以编程方式填充我的DataGrid

  25. 25

    如何以编程方式填充开关盒值?

  26. 26

    如何以编程方式在VB.net中填充DataGridViewComboBoxColumn?

  27. 27

    在xaml中创建的DataGrid列-如何以编程方式填充?

  28. 28

    如何以编程方式填充WPF多列TreeView?

  29. 29

    如何使用 C 语言的 openLDAP 库 API 以编程方式修改现有的 Open LDAP 对象类?

热门标签

归档