2013-09-30 55 views
0

我有一個PDF添加一些TextFields。iTextSharp - PDF字段內容變得不可見

var txtFld = new TextField(stamper.Writer, new Rectangle(cRightX - cWidthX, cTopY3, cRightX, cTopY), FieldNameProtocol) { Font = bf, FontSize = cHeaderFontSize, Alignment = Element.ALIGN_RIGHT, Options = PdfFormField.FF_MULTILINE }; 
    stamper.AddAnnotation(txtFld.GetTextField(), 1); 

的「男朋友」上面是被嵌入到PDF Unicode字體:

BaseFont bf = BaseFont.CreateFont(UnicodeFontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); // Create a Unicode font to write in Greek... 

後來,我上填補希臘文的這些領域。

var acrof = stamper.AcroFields; 
    acrof.SetField(fieldName, field.Value/*, field.Value*/); // Set the text of the form field. 
    acrof.SetFieldProperty(fieldName, "setfflags", PdfFormField.FF_READ_ONLY, null); // Make it readonly. 

當我查看PDF,大多數文本丟失的時代,如果我點擊Acrobat中的(看不見的)文本字段,則文本變爲可見(直到它失去再次對焦)。

任何想法這裏發生了什麼? 我也試過使用非嵌入字體,但我得到了同樣的東西(雖然我似乎仍然獲得與我使用的字體類似的PDF中的嵌入字體)。我不知道我是否失蹤。

+1

看到這個,它的.Net,但應該很容易翻譯成Java,http://stackoverflow.com/a/18445315/231316 –

+0

@ChrisHaas:謝謝!我會盡快嘗試,讓你知道它是如何發展的。 (其實我也在.NET上工作)。 – user2173353

+0

我已經嘗試了這兩行代碼,似乎沒有任何改變。我不知道是否有這樣一個事實,即我將PDF與另一個PDF文檔合併以獲得最終的PDF ... – user2173353

回答

0

看來,我是在做錯誤的順序如下(以下是正確的):

acrof.SetFieldProperty(field.Name, "setfflags", PdfFormField.FF_READ_ONLY, null); // Make it readonly. 
acrof.SetFieldProperty(field.Name, "textfont", bf, null); 
acrof.SetField(field.Name, field.Value/*, field.Value*/); // Set the text of the form field. 

至少這頂帽子,我認爲這是錯誤的。 我做了很多改變。