如何在 iTextSharp 中填写 PDF 表单并支持多种语言?

Posted

技术标签:

【中文标题】如何在 iTextSharp 中填写 PDF 表单并支持多种语言?【英文标题】:How to fill out a PDF form and support multiple languages in iTextSharp? 【发布时间】:2011-04-25 19:50:42 【问题描述】:

我想知道在使用 iTextSharp 填写表单字段时是否有支持多种语言的方法。我们需要支持用户填写英文、带变音符号的欧洲语言以及中文和日文等亚洲语言的字段,但不知道如何在同一个 PDF 上支持所有这些(例如,用户可能有用英语回答的表单字段和一些例如中文)。我们必须使用预定义的 Acrobat 表单,例如在我们的场景中,我们无法完全从头开始创建 PDF。

有没有办法在 iTextSharp 中实现这一点?至少要支持大多数欧洲语言和中文,并让表单/生成过程知道何时使用支持特定字符的正确知道?

【问题讨论】:

【参考方案1】:

是否可以选择根据来自另一个程序的用户输入动态生成 PDF,例如Windows 窗体应用程序或网页?根据用户从所述应用程序中的选择,您可以动态生成 PDF(基于模板)并应用适当的字符集。

【讨论】:

对不起,这不是这个过程的一个选项。我可以编辑 PDF 表单,使用表单域创建副本等,但它们必须是原始表单,而不是从头开始生成 PDF(例如构建布局、PDF 等)。 抱歉,我并不是要暗示您会从头开始生成整个 PDF。当我说“基于模板”时,我的意思是您将以编程方式加载该模板(.pdf 或 .html)文件,然后使用用户选择的正确语言填充字段的值。跨度> 【参考方案2】:

是的。

您遇到的问题(最佳猜测)是您正在填写的字段的预定义字体使用 WinAnsiEncoding(或其他一些不支持您需要的所有变音符号的单字节编码)。

我看到 iText 确实支持直接设置字段的字体。太棒了。

myAcroFields.setFieldProperty(fldName, "textfont", myBaseFont, null);

我相信您需要使用中文编码对字体进行子集化,但对于欧洲编码字体,您可能希望完全嵌入相关字体。当您尝试显示缺少的字符时,表单字段中的字体(可以编辑)反应不佳......至少他们曾经,很多个月前。我上次尝试是在 Acrobat 5 左右,所以很可能行为有所改善。

【讨论】:

以上是关于如何在 iTextSharp 中填写 PDF 表单并支持多种语言?的主要内容,如果未能解决你的问题,请参考以下文章

使用 iTextSharp 将多个页面添加到 pdf 表单

iTextSharp 填充 Pdf 表单图像字段

带有可填写表单域的 PDF +“另存为”=带有固定文本的 PDF - 如何?

iTextSharp生成pdf含模板---制作pdf模板

部分填写 PDF 表单,使其可编辑

如何在php中填写PDF表单