c# - 使用模板和字段将新页面添加到 iTextSharp 的 PdfStamper

标签 c# .net templates pdf itext

我正在尝试将新页面添加到 PdfStamper,但此代码不会将模板 pdf 字段添加到压模。

private void InsertNewPage(PdfStamper stamper, int pageNumber)
{
    var pdfReader = new PdfReader(UrlTemplateBlankPage);

    pdfReader.SelectPages("1");

    stamper.InsertPage(pageNumber, pdfReader.GetPageSize(1));

    stamper.GetOverContent(pageNumber).AddTemplate(stamper.GetImportedPage(pdfReader, 1), 0, 0);

    //This code doesn't work because the code before is not adding the form
    var pdfFormFields = stamper.AcroFields;

    var fieldKeys = pdfReader.AcroFields.Fields.Keys;

    foreach (var k in fieldKeys.ToList())
    {
        pdfFormFields.RenameField(k, k + string.Format("_{0:000}", pageNumber));
    }
}

我在网上搜索过,但找不到关于我的问题的答案。 我添加的 PDF 模板中有一些字段是用 Acrobat 添加的。我无法附上模板,但我可以为您提供所有信息。

最佳答案

我看不出你是如何实例化压模的。这是一个关于如何读取 PDF 模板并将其分配给压模的示例:

var reader = new PdfReader(TEMPLATE_PATH);
var pdfOutput = new FileStream(PDF_OUTPUT_PATH, FileMode.Create)

var stamper = new PdfStamper(reader, pdfOutput);

之后,您可以使用 SetField 函数设置字段:

stamper.AcroFields.SetField("FIELD1", "VALUE")

可以使用以下选项使可填写的 PDF 不可编辑:

stamper.FormFlattening = true;

否则,您的 PDF 仍可填写。

处理完文件后,关闭它们:

stamper.Close();
reader.Close();

在下一个链接中有一个关于如何使用 iTextSharp 的 PdfStamper 的示例:http://www.codeproject.com/Tips/679606/Filling-PDF-Form-using-iText-PDF-Library

关于c# - 使用模板和字段将新页面添加到 iTextSharp 的 PdfStamper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22484617/

相关文章:

c# - 如何将自定义函数转换为 Entity Framework Core 3.1 的 sql 表达式

.net - 我们应该切换到默认使用异步 I/O 吗?

线性层次结构的 C++ 可变参数模板参数

c++ - 无法实例化抽象类 : Why is the template parameter (reference) causing this?

c# - 如何选择 WPF Prism 应用程序使用的 IoC 容器?

c# - 获取进程的所有 DLLS

c# - NGEN x86 与 x64 与 .NET 可执行文件

c# - .NET 程序集版本中保留的最大值

c++ - 类方法的显式特化 - 符号已定义

c# - 列表在不应该使用重复数据时填充