我将PDF规范中的最小PDF示例从PDF Specification复制到NotePad,并将该文件重命名为扩展名为.pdf。PDF规范中的最小PDF示例
我可以用其他PDF查看器(PDF-XChange,SumatraPDF,MuPDF)打开它。但是当我用Adobe Reader打开它时,它说文件已损坏。
我不确定其他观众是否将这个“损坏”的文件视为空白文件。
该文件应该显示一个空白页,因为它是一个最小的例子。
其实我修改了最小的例子。因为当我将它从PDF规范复制到记事本,并通过十六进制编辑器打开.txt文件时,我在.txt文件中看到一个新行,给我2个空格。例如,
1 0 obj
<< /Type /Catalog
给我(在十六进制编辑器)
1 0 obj << /Type /Catalog
其是(在十六进制值)
31 20 30 20 6F 62 6A 0D 0A 3C 3C 20 2F 54 79 70
65 20 2F 43 61 74 61 6C 6F 67
j
和<
之间的2个空间是0D 0A
。
因此,我不在NotePad中换新行,并修改xref
部分中的值。
以下是完整的代码。
你知道这个例子有什么问题吗? Adobe Reader为什么说它被破坏了?这是因为我在xref
中给出了错误的值吗?
%PDF-1.4 1 0 obj << /Type /Catalog /Outlines 2 0 R /Pages 3 0 R >> endobj 2 0 obj << /Type Outlines /Count 0 >> endobj 3 0 obj << /Type /Pages /Kids [4 0 R] /Count 1 >> endobj 4 0 obj << /Type /Page /Parent 3 0 R /MediaBox [0 0 612 792] /Contents 5 0 R /Resources << /ProcSet 6 0 R >> >> endobj 5 0 obj << /Length 35 >> stream … Page-marking operators … endstream endobj 6 0 obj [/PDF] endobj xref 0 7 0000000000 65535 f 0000000009 00000 n 0000000074 00000 n 0000000119 00000 n 0000000176 00000 n 0000000295 00000 n 0000000373 00000 n trailer << /Size 7 /Root 1 0 R >> startxref 395 %%EOF
感谢库尔特,但为什么startxref的值是394不是396这不是值应该是该文件中'xref'中字符'x'的字节偏移量?它是一个十六进制编辑器中的396。但与396,该文件被打破,394作品。我不知道原因。 – user565739
@ user565739:你应该运行'dd bs = 1 skip = 394 if = this.pdf'。这意味着在转储文件时跳过了前394个字节。现在输出应该以'xref'开头,并由它自己开始。 –
当我复制/粘贴这个时,我不得不将单个字符“...”围绕“页面标记操作符”更改为三个字符“...”和从394到398的startxref。我怀疑当我复制/粘贴单个字符“...”被消灭了。通过扩展到三个,个人“。”在流的任一侧,添加了另外4个字节,这使我从394开始将外部参照表移动到398。 – Pat