这个 PDF 文件有什么问题?

What is wrong with this PDF file?

我必须使用一个我不认识的人创建的 PDF 表单。为什么创建表格的程序(Word + PDF 导出?)在第 6909 行将术语“Stunde”拆分为“S”、“t”和“unde”解码PDF?三个部分之间没有视觉上的中断。

/TT1 1 Tf
11.04 0 0 11.04 59.16 476.1203 Tm
(Datum)Tj
/C2_1 1 Tf
<0003>Tj
/TT1 1 Tf
(der)Tj
0.424 -1.315 Td
(Tätigkeit)Tj
-0.0022 Tc 0 11.04 -11.04 0 261.24 437.7203 Tm
[(Ve)-4.6<7267fc74>-4.2(ungssat)-4.2(z)]TJ
/C2_1 1 Tf
0 Tc <0003>Tj
/TT1 1 Tf
-0.0021 Tc 0.935 -1.315 Td
[<2880>-6.1(/)-7.2(S)0.8(t)-4.1(unde)-4.5(\))]TJ   % <<< the important line
0 Tc 11.04 0 0 11.04 340.92 468.8003 Tm
(Anlass/Art)Tj
/C2_1 1 Tf

导致

[]

为了获取上面的源代码,我按照 here 中的描述解码了 PDF 文件。我对 PDF 文件格式一窍不通。

背景:我不得不替换“Stunde”这个词,在源代码中找到写“Stunde”的地方(部分)让我发疯,因为似乎没有免费的 PDF 编辑器能够毫无问题地处理水平文本。

学术奖励问题:是否可以将列的总和设置为表单字段的默认值? (可修改;每次更改列时都会更改。)为什么我能够将“Stunde”替换为“Einsatz”而不会由于现在不规则的偏移而损坏 PDF 文件?

您没有看到视觉中断,但“S”、“t”和“unde”之间的标准距离已更改。这是由支持例如字距调整,使单词看起来更好。这就是为什么要这样拆分的原因。

Why did the program with which the form was created (Word + PDF export?) split the term "Stunde" into "S", "t" and "unde" in line 6909 of the decoded PDF?

正如@gettalong 在 中提到的,在您的情况下,这很可能是为了应用字距调整。

如果您开始研究其他一些 PDF 生成器的输出,您会发现从 Word 导出的这个文件在拆分单词方面实际上非常不引人注目:

  • 有些 PDF 制作者会在明确设置文本矩阵后单独绘制每个字符,并且
  • 也有 PDF 制作者将所用字体的字符宽度信息设置为零,并使用 TJ 指令中的数字在字符之间转发当前文本矩阵因此。

这并没有涵盖所有要找到的变体,目前还没有...

因此,

I had to replace the word "Stunde", it drove me crazy to find the place where "Stunde" was written (in parts) within the source code

在你的情况下,替换实际上是一项相当微不足道的任务...


Is it possible to set the sum over a column as default value for a form field? (Modifiable; changed every time the column is changed.)

如果所有有问题的列值都存储在表单字段中,您可以使用 JavaScript 在表单更改后重新计算总和。要让它仅用作“默认”,您可以使用其他一些(隐藏的)字段来标记该字段是否已被触及。但请注意:JavaScript 并非所有 PDF 查看器都支持。此外,JavaScript PDF 的对象模型不是在独立的(如 ISO)规范中指定的,而是在 Adob​​e 规范中指定的,这可能会使对规范的解释有偏见。


Why was I able to replace "Stunde" with "Einsatz" without making the PDF file corrupt due to now irregular offsets?

由于我们不知道您是如何应用这些更改的,所以这显然很难说。

不过,您很可能确实损坏了 PDF 和您打开它的 PDF 查看器只是修复了底层的损坏。 PDF 查看器很容易在不通知用户的情况下进行此类 under-the-hood 修复;结果是很大一部分在野外的 PDF 实际上被破坏了。