簡體   English   中英

更改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中設置屬性的方式: OpenOffice TextField屬性

當使用Open Office創建表單時,Open Office向PDF添加一個參數,指示處理PDF的軟件不創建任何外觀流,而是將其留給PDF查看器來創建那些外觀。

只要表單保持交互性,此方法就起作用,但是一旦將表單展平,則根本不會創建任何外觀。

您可以通過添加以下行來解決此問題:

fields.GenerateAppearances = true;

這樣,您可以強制iTextSharp生成外觀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM