使用PDFTk编码UTF-8时填写的pdf中缺少字符

时间:2016-03-24 09:28:42

标签: php pdf encoding pdftk fdf

我尝试使用PDFTk填写pdf文档。脚本工作正常,它填写输入形式但我不会得到特殊字符[polish charset:UTF-8或ISO-8859-2]。

脚本:https://github.com/mikehaertl/php-pdftk

奇怪的是,当我点击字段时,生成的pdf实际上有抛光字符。

点击之前:

enter image description here

点击字段后

enter image description here

默认编码设置为UTF-8。问题是PDFTk不能使用标准ASCII之外的字符和FDF表单填充。它不允许使用多字节字符。

我做了什么:

  1. 将字体添加到pdf文件(已检查,文件有字体)
  2. 使用默认字体(Arial)
  3. 在pdf文件中创建字段
  4. 将脚本(函数fillForm)中的编码更改为ISO-8859-2
  5. 更改数据值编码(iconv或mb_convert_encoding)
  6. 将功能编码和数据值编码更改为ISO-8859-2
  7. 填写表格后填写pdf
  8. 在stackoverflow中阅读有关此问题的所有主题,谷歌
  9.   

    更新(25.03.2016):了解pdf文档在某些计算机上运行正常。有些人有波兰人和其他人。所有的   我们有正确的字体(波兰charset)。我使用默认的Arial或   英语字体格式一种。字体也嵌入在该文件中。

    有什么想法吗?

4 个答案:

答案 0 :(得分:2)

您需要使用need_appearances作为argument运行pdftk。

来自github上this issue的人们。

答案 1 :(得分:0)

我有类似的问题。 用utf8_decode函数解决了。例如utf8_decode('Łukasz')

答案 2 :(得分:0)

我找不到更改字体的方法,因此我的解决方案-使用itext https://itextpdf.com/en/resources/examples/itext-5/filling-out-forms

为我的项目https://github.com/dddeeemmmooonnn/pdf_form_filler

致词

答案 3 :(得分:0)

在创建UDF-8值并将其编码为UTF-18BE的FDF文件时,得到的最佳结果(不展平)

chr(0xfe) . chr(0xff) . str_replace(array('\\', '(', ')'), array('\\\\', '\(', '\)'), mb_convert_encoding($string, 'UTF-16BE'));

您的图书馆运作良好,但是。当我直接在MACOS的Safari中打开用它生成的PDF时,直到单击该字段,它才显示波兰字符。当我使用Adobe Reader打开它时-可以正常工作。