好的,找到了几分钟的空闲时间...
所以我注意到的第一件事是 *所有其他读者确实可以打开文件(我只测试了几个)。但是这些确实会吐出很多警告和错误消息...(尝试 Ghostscript:gs virkerikke.pdf
或尝试 evince...)xref
PDF 中至少也有一个损坏的表格(或者至少这是其中一个抱怨)。
xpdf
抱怨:
[....]
Error: Invalid XRef entry
Error: Invalid XRef entry
Error: Invalid XRef entry
Error (157): Unterminated string
Error (159): End of file inside dictionary
gv
抱怨:
Warning: translation table syntax error: Unknown keysym name: apLineDel
Warning: ... found while parsing '<Key>apLineDel: GV_Page(page+5) '
Warning: String to TranslationTable conversion encountered errors
evince
抱怨:
[....]
Error: Invalid XRef entry
Error: Invalid XRef entry
Error: Invalid XRef entry
Error (157): Unterminated string
Error (159): End of file inside dictionary
Error (157): Unterminated string
Error (159): End of file inside dictionary
Error (157): Unterminated string
Error (159): End of file inside dictionary
[....]
Error (1918): Unterminated string
Error (1920): End of file inside dictionary
gs
抱怨:
**** Warning: File has a corrupted %%EOF marker, or garbage after %%EOF.
mupdf
抱怨:
+ pdf/pdf_xref.c:60: pdf_read_start_xref(): cannot find startxref
| pdf/pdf_xref.c:477: pdf_load_xref(): cannot read startxref
\ pdf/pdf_xref.c:532: pdf_open_xref_with_stream(): trying to repair
warning: ignoring invalid character in hex string: '!'
warning: ignoring invalid character in hex string: 'O'
warning: ignoring invalid character in hex string: 'T'
warning: ignoring invalid character in hex string: 'Y'
[....]
qpdf --qdf
抱怨:
virkerikke.pdf (object 17 0, file position 2234): null character not allowed in name token
好的,现在在文本编辑器中打开这个糟糕的文件,尝试修复它。我发现这个文件(大小为 32746 字节)有一些严重的语法问题:
- 之后的垃圾
%%EOF
:有一个完整且语法正确的 HTML 文件粘贴到 PDF 的%%EOF
标记之后,标题为“Wkhtmltopdf - Teknisk regelverk”。它的大小是 11878 字节。删除这部分,您将拥有一个“更好”的 PDF,其大小仅剩 20868 字节……尽管在您保存编辑后的文件后 Acrobat/Adobe Reader 仍然无法打开它。
- 名称标记中的无效字符:这是在名称标记
/#8d#c2#ca#ebs#e4#60#00#9e#97l#b9#80#1b#cb#86sQR#83
中。它在此文件中显示为 2x。在我的第一条评论中,我已经告诉过你,这个密钥对我来说看起来不可信,因为它只包含很少的 ASCII 字符,但有很多二进制字节(使用它们的十六进制表示。(我忽略的是它甚至包含一个#00
这是一个nul
字符的 PDF 表示...对于 PDF 中的名称标记,使用它是非法的。)用另一个长度完全相同的(幻想)替换该名称标记(两次出现)。我确实选择了/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
。保存编辑的文件。
现在,即使是 Acrobat/Adobe Readers 也可以毫无怨言地打开这个修复过的文件。此外,“其他阅读器”现在可以更好地使用此文件,发出更少的警告,并且现在能够识别他们无法获取原始文件的一些元数据(例如创建日期和生产者 == wkhtmltopdf)。