2013-07-02 88 views
2

我正在使用C#和iTextSharp for PDF。我有一個PDF模板,它具有用於信息的表單字段以及用於電子簽名的表單字段。我需要能夠讓工作人員填寫表格的一部分,然後在代碼中將該部分弄平(僅留下簽名字段),然後將PDF傳遞給DocuSign的API以讓用戶以電子方式簽署文檔。如何拼湊一些PDF表單字段,但不是所有這些字段

我有要求,只有當用戶(簽名)應該可以編輯的字段到達DocuSign API時是表單字段。在將其傳遞到DocuSign API之前,我必須將所有其他字段平整(DocuSign自動可以爲Signature標記表單字段)。

有誰知道如何做到這一點?我曾考慮過獲取簽名字段的位置,並且在整個PDF中添加了iTextSharp的表單字段後,我覺得這是一個破解。

回答

4

如果你想變平的特定字段,而不是整個文件那麼我相信你可以使用以下命令:

Stamper.FormFlattening = true; 
Stamper.PartialFormFlattening("FieldName"); 

唯一的缺點這種方法是,你需要列出需要扁平化的每個字段。我認爲它們也必須包含一個值(即你不能將一個空白字段弄平)。

+0

另一個缺點是對XFA表單不起作用 –

0

對於XFA表單你

XFA表單不支持部分表單展開。

如果您使用PartialFormFlattening,則爲例外。

要平一些領域我用

stamper.AcroFields.SetFieldProperty(fieldName, "setfflags", PdfFormField.FF_READ_ONLY, null); 

確保您使用完整的字段名(例如用於W-9名稱字段使用 「topmostSubform [0] .Page1 [0] .f1_1 [0]」 不「f1_1 「)否則它將無法工作。

我也試着刪除XFA與

PdfDictionary acro = 
    (PdfDictionary)PdfReader.GetPdfObject(
      pdfReader.Catalog.Get(PdfName.ACROFORM)); 
       acro.Remove(PdfName.XFA); 

,因爲它描述here,但我得到了同樣的異常。

相關問題