ОК, нашел несколько свободных минут ...
Итак, первое, что я заметил, это то, что * все другие читатели действительно могут открыть файл (я тестировал только несколько).Но они выдают много-много предупреждений и сообщений об ошибках ... (Попробуйте Ghostscript: gs virkerikke.pdf
, или попробуйте evince ...) В PDF также есть хотя бы поврежденная таблица xref
(или, по крайней мере,это одна из жалоб).
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
.Похоже, 2 раза в этом файле.Уже в моих первых комментариях я говорил вам, что этот ключ не выглядит мне заслуживающим доверия, потому что он содержит только очень мало символов ASCII, но много двоичных байтов (используя их шестнадцатеричное представление. (То, что я пропустил, это то, что он даже содержал#00
, которое является представлением PDF для символа nul
... использование которого является недопустимым для токенов имен в PDF.) Замените этот токен имени на другой (фантазийный) один точно такой же длины (в обоих случаях)Я выбрал /aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
. Сохраните отредактированный файл.
Теперь даже Acrobat / Adobe Readers откроет этот восстановленный файл без жалоб. Кроме того, «другие читатели» будуттеперь лучше работайте с этим файлом, выдавая меньше предупреждений и теперь имея возможность идентифицировать некоторые метаданные (такие как дата создания и производитель == wkhtmltopdf), которые они не смогли получить для исходного файла.