我有一些PDF模板文件,其中包含AcroForm
个字段,使用OpenOffice创建。当我尝试使用iTextSharp
填充字段时:
form.SetField(field.Key, String.Format(field.Value.FormatString, value));
我在展平的字段中得到重叠和缺少的字符:
我可以在完成的PDF中嵌入Arial
字体,但这会大大增加大小,这也意味着必须重置已在字段上设置的所有字体属性(由Open Office提供)。
当我在Adobe Reader中手动填写表单时,文本显示正确。 欢迎任何建议。
答案 0 :(得分:0)
我不是itextsharp的用户,但在java中使用了itext。所以我想你在这里提到的是添加替换字体。我作为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(垂直方向,水平方向)。如果这有帮助的话这种方式(作为java itext用户我没有知道它与itextsharp的符合程度)