pdftk 生成的 pdf 无法呈现正确的 utf-8

问题描述 投票:0回答:1

版本是

2.02

我有一个带有名称字段的简单 pdf。我使用

fdf
 创建了一个 
pdftk

pdftk form4.pdf generate_fdf output data4.fdf

删除不必要的字段,如下所示:(pastebin上的完整视图)

/Fields [
<<
/V (testname)
/T (name)
>>]

然后我修改

fdf
并将
testname
更改为
testϢname
(U+03E2)(使用
vim
并开启 utf-8 编码,还
cat
在终端中查看其正确性)

然后我尝试使用

生成pdf
pdftk form4.pdf fill_form data4.fdf output form5.pdf need_appearances

查看表格(下图),我看到不同的字符。我在 MacOS 预览版、Chrome 和 Acrobat 上查看了此内容。我也用了

flatten
,但结果是一样的。这是 Arial unicode 字符。

pdf unicode utf-8 pdftk
1个回答
0
投票

简单地调用字符 Arial 并不能实现这一点,除非字体位于 PDF“内部”,并且因为您不知道客户使用的字符是美国字符、亚美尼亚字符还是亚洲字符等。您需要包含来自世界各地的字段通常没有真正的字符,除了最初没有字体之外,需要使用 Acrobat Reader 编辑器等 PDF 重写器将字体添加到文件中。

您的表单有 20 个对象条目,我们可以将其数量减少约 25% 至 15 个活动条目,并且大小不会损失任何内容,但会使其更干净。然而,这里是20的关键条目

6 0
是页面
/TLBZsrqIpt
相对于左下角的字段Xobject,然后字体
/FTPLWNbykz
用作14pt(名称)的纯文本括号的意思是(纯文字ASCII字节) )

6 0 obj
<</Length ~90>>
stream
q /TLBZsrqIpt Do Q
q 0 g BT /FTPLWNbykz 14 Tf 1 0 0 1 199 689.154 Tm [(name)] TJ ET Q
endstream
endobj

因此,我们首先要澄清的是,固定页面文本不是 Arial,因此不需要字体,因为它存储 Helvetica,因此任何瑞士字符 32-128 和一些(此处为“Windows ANSI”单字节,但可能是 Mac 编码)。

/Font<</FTPLWNbykz 4 0 R>>

4 0 obj <</Type/Font/Subtype/Type1/BaseFont/Helvetica/Encoding/WinAnsiEncoding>> endobj

那么放在它前面的字段呢?嵌入什么字体?

2 0 obj <</AP<</N 16 0 R>>/DA(/Helv 14 Tf 0 g)/F 4/FT/Tx/Ff 4194304/MK<<>>/P 1 0 R/Q 0/Rect[200.5 650 300.5 675]/Subtype/Widget/T(name)/TM(NySwFduhG)/V(testname)>> endobj

因此我们看到它也将简单地使用 Helvetic Swiss Style Latin 单字节字体的 14 点缩写

/Helv 14
。也只希望能被替换成
(plain text)

因此,到目前为止,文件中没有任何内容允许任何 Unicode 字符加密。

Acrobat Editing Reader 保存后。它改变。现在,不再有 15 个工作对象,而是在 33 个文件中约有 24 个(大约 8 个是冗余条目)。但是,该文件现在大约大 8 倍,因为需要嵌入该一个字符的所有字体。您不会看到此处列出的字体,因为它不是页面文本使用的 Simple Helvetica 名称的一部分。

[![在此处输入图像描述][1]][1]

Acrobat 如何从纯文本更改为“基于字体”的字段条目

在这里,我们看到 (ANSI) 已通过编程方式更改为 16 位 HeX (UTF16)。

2 0 obj <</AP<</N 21 0 R>>/DA(/Helv 14 Tf 0 g)/F 4/FT/Tx/Ff 4194304/MK<<>>/P 1 0 R/Q 0/Rect[200.5 650 300.5 675]/Subtype/Widget/T(name)/TM(NySwFduhG)/V<FEFF007400650073007403E2006E0061006D0065>>> endobj


  [1]: https://i.stack.imgur.com/XPSw3.png
© www.soinside.com 2019 - 2024. All rights reserved.