0

我有一些 PDF 模板文件,AcroForm其中包含字段,是使用 OpenOffice 创建的。当我尝试使用以下方式填写字段时iTextSharp

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

我在展平字段中出现重叠和丢失的字符:

在此处输入图像描述

我可以将Arial字体嵌入到完成的 PDF 中,但这会使大小膨胀很多,这也意味着必须重置已在字段上设置的所有字体属性(由 Open Office 提供)。

当我在 Adob​​e Reader 中手动填写表格时,文本显示正确。欢迎任何建议。

4

1 回答 1

0

我不是 itextsharp 的用户,但在 java 中使用了很多 itext。所以我认为你在这里想念的是添加替换字体。我作为 Pdf 阅读器不知道是否有可用的字体来显示其文本字符。作为您正在使用 AcroForm,因此会有一个对象 PdfStamper,您还可以找到类似 PdfStamper.getWriter().getAcroForm().setNeedAppearances(true); 的方法;与 itext java 对应项一样。还有 form.addSubstitutionFont(您的语言的 BaseFont Obj)。您可以添加多个,因为在 java itext 透视图中它是一个数组列表。此外,在使用 .ttf 文件或 .ttc 文件的字体创建 basefont 时,请记住哪种编码使用。例如,为了保持中文字符不变,我们使用 IDENTITY_H 编码,对于阿拉伯语,我们使用 IDENTITY_V(V-垂直方向,H-水平方向)。

于 2013-01-21T19:07:36.960 回答