【问题标题】:Missing characters in filled pdf using PDFTk with encoding UTF-8使用编码为 UTF-8 的 PDFTk 填充的 pdf 中缺少字符
【发布时间】:2016-03-24 09:28:42
【问题描述】:

我正在尝试使用 PDFTk 填写 pdf 文档。脚本工作正常,它在表单中填写输入,但我没有得到特殊字符 [波兰字符集:UTF-8 或 ISO-8859-2]。

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

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

点击前:

点击字段后:


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

我做了什么:

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

更新 (25.03.2016):发现 pdf 文档在某些计算机上运行良好。有些人有波兰语字符,有些人没有。所有的 我们有正确的字体(带有波兰语字符集)。我使用默认的 Arial 或 英语字体格式一种。字体也嵌入在该文件中。

有什么想法吗?

【问题讨论】:

  • 即使使用 Times New Roman 字体,我也有同样的问题。但它是因为 LibreOffice PDF 导出,
  • 这似乎不是因为缺少字体字符。我的问题从 LibreOffice Writer 导出 PDF 后立即开始

标签: php pdf encoding pdftk fdf


【解决方案1】:

您需要以need_appearances 作为argument 运行pdftk。

向来自 github 上 this issue 的人致敬。

【讨论】:

  • 感谢您的回答,这帮助我解决了我的问题。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    当我使用编码为 UTF-18BE 的 UTF-8 值创建 FDF 文件时,我得到了最好的结果(没有展平)

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

    您的库运行良好,但即。当我直接在 MACOS 上的 Safari 中打开使用它生成的 PDF 时,它不会显示波兰字符,直到我单击该字段。当我用 Adob​​e Reader 打开它时 - 它工作正常。

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

      • 请在您的项目中显示您使用 itext 解决类似问题的部分。
      • @Nabil Farhan 我不完全理解这个问题。我需要在 laravel 项目中用西里尔文填写表格。 pdftk 在您单击字段之前不显示西里尔字母,字体问题
      猜你喜欢
      • 2011-08-28
      • 2017-09-13
      • 1970-01-01
      • 1970-01-01
      • 2011-08-06
      • 2011-07-22
      • 1970-01-01
      • 2011-08-09
      • 1970-01-01
      相关资源
      最近更新 更多