更改 PDF 中的标签文本
Change text of label in PDF
我在编辑 PDF 文档中的字段时遇到问题。
我使用 OpenOffice 创建了一个简单的发票,并通过表单创建工具添加了一些字段。之后我将它导出为带有表格的 PDF。
我要更改的字段之一名为“{Firma}”,我想用字符串填充该字段。
下面是一个简短的示例代码,它似乎不起作用,输出文件中的字段“{Firma}”仍然是空的。
public static void ReplacePdfForm()
{
string fileNameExisting = @".\template\templaterechnung.pdf";
string fileNameNew = @".\rechnung.pdf";
using (var existingFileStream = new FileStream(fileNameExisting, FileMode.Open))
using (var newFileStream = new FileStream(fileNameNew, FileMode.Create))
{
// Open existing PDF
var pdfTemplate = new PdfReader(existingFileStream);
// PdfStamper, (PDF to be changed)
var pdfInvoice = new PdfStamper(pdfTemplate, newFileStream);
AcroFields fields = pdfInvoice.AcroFields;
// set form fields
fields.SetField("{Firma}", "Test1");
pdfInvoice.FormFlattening = true;
pdfInvoice.FreeTextFlattening = true;
pdfInvoice.Close();
pdfTemplate.Close();
}
}
(我还有一些字段也没有改变,但我从代码中删除了它们,因为它们的行为方式相同。)
提前致谢。
编辑:
这是我的 PDF:http://www.file-upload.net/download-11071404/templaterechnung.pdf.html
编辑2:
这是我在 OpenOffice 中设置 属性 的方式:
使用 Open Office 创建表单时,Open Office 向 PDF 添加一个参数,指示处理 PDF 的软件不创建任何外观流,而是让 PDF 查看器创建这些外观。
只要表单保持交互,此方法就有效,但一旦将表单展平,就根本不会创建任何外观。
您可以通过添加以下行解决此问题:
fields.GenerateAppearances = true;
通过这种方式,您可以强制 iTextSharp 生成外观。
我在编辑 PDF 文档中的字段时遇到问题。
我使用 OpenOffice 创建了一个简单的发票,并通过表单创建工具添加了一些字段。之后我将它导出为带有表格的 PDF。
我要更改的字段之一名为“{Firma}”,我想用字符串填充该字段。
下面是一个简短的示例代码,它似乎不起作用,输出文件中的字段“{Firma}”仍然是空的。
public static void ReplacePdfForm()
{
string fileNameExisting = @".\template\templaterechnung.pdf";
string fileNameNew = @".\rechnung.pdf";
using (var existingFileStream = new FileStream(fileNameExisting, FileMode.Open))
using (var newFileStream = new FileStream(fileNameNew, FileMode.Create))
{
// Open existing PDF
var pdfTemplate = new PdfReader(existingFileStream);
// PdfStamper, (PDF to be changed)
var pdfInvoice = new PdfStamper(pdfTemplate, newFileStream);
AcroFields fields = pdfInvoice.AcroFields;
// set form fields
fields.SetField("{Firma}", "Test1");
pdfInvoice.FormFlattening = true;
pdfInvoice.FreeTextFlattening = true;
pdfInvoice.Close();
pdfTemplate.Close();
}
}
(我还有一些字段也没有改变,但我从代码中删除了它们,因为它们的行为方式相同。)
提前致谢。
编辑:
这是我的 PDF:http://www.file-upload.net/download-11071404/templaterechnung.pdf.html
编辑2:
这是我在 OpenOffice 中设置 属性 的方式:
使用 Open Office 创建表单时,Open Office 向 PDF 添加一个参数,指示处理 PDF 的软件不创建任何外观流,而是让 PDF 查看器创建这些外观。
只要表单保持交互,此方法就有效,但一旦将表单展平,就根本不会创建任何外观。
您可以通过添加以下行解决此问题:
fields.GenerateAppearances = true;
通过这种方式,您可以强制 iTextSharp 生成外观。