【问题标题】:Filling PDF form with PDFTK (or php/javabridge) ignoring certain unicode chars使用忽略某些 unicode 字符的 PDFTK(或 php/javabridge)填写 PDF 表单
【发布时间】:2025-11-21 13:40:02
【问题描述】:

Possibly related question 1, Related question 2

我们正在努力实现的目标:
使用 drupal webform 提交数据作为源来填写 PDF 表单并将其提供给用户,然后将其展平以进行打印。我们正在尝试在 Drupal 6 上部署它,然后在 Drupal 7 上部署。站点是部署在 CentOS VPS 上的大型 D6 站点。我们正在将其移至 D7。

链接:

我们的问题:
无论我们尝试什么,我们都无法将某些 Unicode(utf-8) 字符插入 PDF。
特别是这些不起作用:č、đ、ć
这些作品:š、ž
注意:这必须有效,因为这些字符在斯洛文尼亚人的姓名和姓氏中很常见,并且此 pdf 是斯洛文尼亚合同的打印输出。

我们尝试了什么:
我们首先使用了我们的系统管理员从源代码​​构建的PDFTK。我们尝试了 1.41 和 1.41。然后他找到了两个版本的包,我们对它们都进行了测试。没有工作。然后,我们分析了该模块,并使用了相同的命令行函数和一个精简的示例。它产生了同样的结果。我们尝试了在 Mac 上从 DOC 转换生成的 PDF,而不是使用 Adob​​e Acrobat Pro 添加的字段。比我们尝试在 Linux Mint 上使用 LibreOffice 创建的 PDF。两者都产生了相同的结果。此问题已在 CentOS vps、我们的系统管理员的 CentOS virtualbox 安装和 ubuntu 10.04 devbox 以及 2 个 D6 vanilla 安装、1 个 D7 vanilla 安装和生产 D6 安装上复制。 我们还尝试了 fillpdf 模块给出的第二个选项:java/tomcat bridge (More here)。这是在 ubuntu 10.04 devbox 上尝试过的,它也没有工作。我们还尝试了提供的软件即服务 PDFTK 服务FillPDF service,它也产生了相同的结果。

有什么想法可能是错的吗?任何想法如何完成此操作(即使使用其他系统、服务、自定义代码等)?

【问题讨论】:

  • Putr,当您说 Tomcat 设置“不起作用”时,您的意思是您在配置它时遇到了问题,或者它填充了 PDF 但没有成功填充这些字符?
  • 这个答案似乎是一个很大的提示:*.com/a/6926874/724455 - 似乎使用 Unicode 字符引用对字符进行 HTML 编码是 XFDF 文件中的方法。我会在模块中记下这一点,稍后再回来看看。这很棘手,因为它似乎可以与 pdftk 一起使用,但不确定它如何在 JavaBridge 方面发挥作用。
  • @wizonesolutions Tomcat 设置有效(就 PDF 生成而言),但 unicode 字符仍然存在同样的问题。
  • 似乎是 Tomcat/Java 字体问题。一位中国用户设法以某种方式添加了中文字体并使整个工作正常。我会在某个时候更仔细地阅读他所做的事情并更新文档(并进行更多测试)。

标签: drupal pdf unicode utf-8 pdftk


【解决方案1】:

尝试使用: http://sourceforge.net/projects/pdfformfiller2/files/.

要安装,请执行以下操作:

填写pdf:

drush dl fillpdf
drush en fillpdf

网络表单:

drush dl webform
drush en webform

网络表单令牌:

drush dl webform_tokens
drush en webform_tokens

PDF 表单填充器 2:

itext-xtra-5.2.0.jar 0060b17c2ca9ee33a39806a8bad461e2

itextpdf-5.2.0.jar   ea0173384c42986e269da4fb67d0a391

pdfformfiller.jar    9109ecb8f887ea40719480134ed73ddd

pdf_filler.sh

您还需要在服务器上使用这个 java 包:

giflib-4.1.3-7.3.3.el5.i386.rpm

java-1.6.0-openjdk-1.6.0.0-1.27.1.10.8.el5_8.i386.rpm

tzdata-java-2012c-1.el5.i386.rpm

chmod +x pdf_filler.sh

pdf_filler.sh should be in $PATH

【讨论】: