Ответ 1
Сначала:, когда вы скопировали "пример из спецификации PDF", очень вероятно, что произошло несколько событий, из-за чего ваша копия не работала должным образом:
- ... вы не "скопировали", перепечатав пример в текстовом редакторе, но
- ... вы использовали copy'n'paste, используя PDF в качестве исходного файла.
В зависимости от вашего текстового редактора этот метод, вероятно, вызвал преобразование соглашения новой строки, которое должно быть изменено с [cr] + [lf] на [cr] или наоборот. Это, в свою очередь, означает, что числа смещения байта в "таблице содержания" объекта ( "xref
" - таблица) больше не действительны.
Еще одна проблема с исходным кодом PDF, который вы опубликовали, заключается в том, что он теперь не содержит никаких разрывов строк. Некоторые зрители могут все еще молча разобрать вещь, но не все. И это, безусловно, противоречит спецификации, потому что согласно спецификации, в главе 7.5.2 четко указано, что
"Первая строка PDF файла должна быть заголовком, состоящим из 5 символов% PDF-, а затем номер версии формы 1.N, где N - цифра от 0 до 7.
Ваш заголовок нарушает это правило.
Кроме того, "поток" в 5 0 obj
не является допустимым PDF-кодом, это просто текст владельца места (… Page-marking operators …
). Некоторые зрители могут наклоняться, когда сталкиваются с таким "мусором".
Наконец, значение startxref
неверно.
Итак, вот файл, который работает. Я отремонтировал его в текстовом редакторе, и я положил ваш исходный код в качестве комментария после %%EOF
для сравнения и ссылки:
%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
0000000376 00000 n
trailer
<< /Size 7 /Root 1 0 R >>
startxref
394
%%EOF
%% %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