使用模板和字段向iTextSharp的PdfStamper添加新页面

时间:2014-03-18 15:59:09

标签: c# .net templates pdf itextsharp

我正在尝试向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字段。我无法附上模板,但我可以为您提供所有信息。

1 个答案:

答案 0 :(得分:0)

我看不出你如何实例化压模。这是一个关于如何阅读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