[英]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:
當使用Open Office創建表單時,Open Office向PDF添加一個參數,指示處理PDF的軟件不創建任何外觀流,而是將其留給PDF查看器來創建那些外觀。
只要表單保持交互性,此方法就起作用,但是一旦將表單展平,則根本不會創建任何外觀。
您可以通過添加以下行來解決此問題:
fields.GenerateAppearances = true;
這樣,您可以強制iTextSharp生成外觀。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.