2013-01-15 65 views
0

我有一些使用OpenOffice創建的AcroForm字段的PDF模板文件。當我嘗試使用iTextSharp滿山遍野:iTextSharp在AcroForm字段中呈現捷克字符

form.SetField(field.Key, String.Format(field.Value.FormatString, value));

我得到的重疊,並在扁平領域缺少字符:

enter image description here

我可以在成品PDF使嵌入的Arial字體,但是這會使文件的大小膨脹很多,這也意味着必須重置已經設置在字段上的所有字體屬性(禮貌的Open Office)。

當我在Adobe Reader中手動填寫表單時,文本顯示正確。 歡迎任何建議。

+2

您需要設置SubstitutionFont:http://stackoverflow.com/a/11202983/298573 – VahidN

回答

0

我不是itextsharp的用戶,但在java中使用了itext頗多一點。所以我想你在這裏提到的錯誤是添加替換font.I作爲PDF閱讀器不知道是否有字體可用或不顯示其正如你使用AcroForm所以會有一個對象PdfStamper,你也可以找到類似PdfStamper.getWriter()。getAcroForm()。setNeedAppearances(true);方法的方法。如在itext java對應中。還有form.addSubstitutionFont(BaseFont Obj爲你的語言)。你可以添加多個,因爲在java itext透視圖中它是一個arraylist.Also當使用.ttf文件或.ttc文件字體創建basefont時,請記住哪種編碼例如,如果我們使用IDENTITY_H編碼來維護中文字符,對於阿拉伯語我們使用IDENTITY_V(V-Vertical Orientation,H-Horizo​​ntal Orientation).try這種方式,如果這有幫助的話(作爲一個java itext用戶,我不會知道它符合itextsharp多少)