c# - iTextSharp 从现有的 PDF 模板生成 PDF

标签 c# pdf itextsharp

我正在研究使用 C# 和 iTextSharp 创建一些东西的可行性,这些东西可以采用 PDF 模板并将各种占位符值替换为从数据库中检索到的实际值。本质上是一个 PDF 邮件合并。我有 iText in action book,但它涵盖了很多我不需要的东西,我正在努力寻找与我想做的事情相关的任何东西。我很乐意使用 PDF 字段作为占位符,只要合并/展平的表单看起来不像其中有字段,输出文档应该看起来像邮件合并的信件而不是已填写的表单。在一个理想的世界,我只想搜索 PDF 的文本内容,然后将文本占位符替换为正确的字段值,即 la word 邮件合并。

谁能告诉我解决这个问题的最佳方法,并指出最有用的 iTextSharp 类的使用方向,或者如果您知道 iText in Action 一书,请指向最有用的部分供我阅读。

最佳答案

  1. 在您选择的页面布局/文本编辑器中构建没有字段的模板。
  2. 保存为 PDF。
  3. 打开该 PDF 并向其添加字段。这在 Acrobat Pro 中很容易做到(如果需要,您可以下载试用版)。这在 iText 中也是可能的,只是要难得多。

在任何一种情况下,您都希望将表单字段设置为没有边框,也没有背景...这样只有它们的内容可见,没有框使您的字段看起来像字段.

使用 iText 将字段数据合并到表单中非常简单(请原谅我的 Java,我对 C# 了解不多):

void fillPDF( String filePath, Map<String, String> fieldVals ) {
  PdfReader reader = new PdfReader(myFilePath);

  PdfStamper stamper = new PdfStamper( reader, outputFileStream );
  stamper.setFormFlattening(true);

  AcroFields fields = stamper.getAcroFields();

  for (String fldName : fieldVals.keySet()) {
    fields.setField( fldName, fieldVals.get(fldName) );
  }

  stamper.close();
}

这将忽略具有多个选择(和异常(exception))的列表框,但除此之外应该准备就绪。鉴于您正在做邮件合并类型的事情,我认为多项选择不会有太大问题。

关于c# - iTextSharp 从现有的 PDF 模板生成 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6277701/

相关文章:

c# - Azure Blob 存储上传失败

c# - PDF云注释背后的算法是什么?

javascript - 将 pdf 加载到 Blob 并创建 url

c# - 如何在iTextSharp中的Pdf单元格中添加一个复选框?

c# - 使用 iTextSharp 创建 Pdf 时将图像水印添加到 Pdf

c# - 对象引用未设置为实例错误

javascript - 如何将链接项列表作为一个数据传递给.net mvc 中的 Controller ?

c# - HttpClient : Count cannot be less than zero. 参数名称:count

google-chrome - Amazon S3 中的 PDF 无法在 Chrome 中打开进行查看

c#-4.0 - 使用 iTextSharp 从 PDF 中读取复选框、单选按钮名称和值