Файл PDF не может быть открыт с помощью Adobe Acrobat - PullRequest
0 голосов
/ 11 сентября 2018

Не совсем вопрос программирования, но у меня заканчиваются идеи.

Я создаю этот файл PDF: http://www.o2sol.com/download/Sample_ObjectCompression_CryptBad.pdf
Я могу открыть файл PDF с помощью любого средства просмотра PDF, которое я пробовал (Chrome, Edge, Foxit, SumatraPDF, Xodo и т. Д.), Но Adobe Acrobat не может открыть его, ошибка: «Файл поврежден и его невозможно восстановить».

Может кто-нибудь подсказать, что не так с файлом?

Отказ от ответственности: файл PDF создается с помощью PDF4NET, библиотеки, над которой я работаю.

Обновление:
Я исправил смещение для объекта 10, но файл по-прежнему нельзя открыть с помощью Acrobat.
Я создал 2 обновленных файла:
http://www.o2sol.com/download/Sample_ObjectCompression_CryptBad2.pdf - файл просто зашифрован с помощью RC4, нет сжатия в потоке объекта или потоке внешних ссылок
http://www.o2sol.com/download/Sample_ObjectCompression_NoCrypt2.pdf - файл не зашифрован, сжатие в потоке объекта или потоке внешних ссылок отсутствует. Зашифрованный объект был заменен информацией документа, чтобы сохранить те же номера объектов и смещения.

Оба файла имеют одинаковый поток внешних ссылок и поток объектов. Acrobat по-прежнему не может открыть CryptBad2, поэтому я подозреваю, что это проблема шифрования, хотя если я зашифрую файл, но потеряю сжатие объекта, файл откроется без проблем с Acrobat.

Ответы [ 3 ]

0 голосов
/ 11 сентября 2018

Проблема, по-видимому, заключается в данных потока объекта, поскольку она закодирована неправильно.Попытка декодировать его не дает данных, возможно, что-то не так с процессом кодирования Flate.

Библиотека PDF обнаруживает ту же проблему при поиске объектов в потоке объектов и выдает ошибку (которая, вероятно, такая жепроблема, которая проявляется в Acrobat, поскольку именно она используется для открытия документа).


По-видимому, также имеется некоторое количество (11 байт) мусора со смещением 0x0A, сразу после заголовка и непосредственно перед идентификатором объекта1:

25 D8 D8 D8 D8 D8 D8 D8 D8 D8 D8 D8 D8 D8 D8 D8 D8 D8 D8 D8

(возможно, это комментарий.)

0 голосов
/ 11 сентября 2018

Объект 10 (сам поток перекрестных ссылок) не имеет действительной записи в себе.Его поля:

01 00 00 00

Что означает (под W [1 2 1]), что он расположен со смещением 0, что неверно (наверняка).

0 голосов
/ 11 сентября 2018

Acrobat, вероятно, пытается прочитать весь поток объекта перед открытием файла, тогда как упомянутые инструменты просмотра могут получить частичное чтение и разрешить частичное отображение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...