版本是
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
在终端中查看其正确性)
然后我尝试使用
生成pdfpdftk form4.pdf fill_form data4.fdf output form5.pdf need_appearances
查看表格(下图),我看到不同的字符。我在 MacOS 预览版、Chrome 和 Acrobat 上查看了此内容。我也用了
flatten
,但结果是一样的。这是 Arial unicode 字符。
简单地调用字符 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