что вызывает «недостаточно данных для изображения» в формате PDF - PullRequest
3 голосов
/ 04 октября 2010

У меня есть программа на Python (использующая pyPDF), которая объединяет кучу разных PDF-документов.Иногда полученный PDF-файл в порядке, за исключением нескольких пустых страниц посередине.Когда я просматриваю эти документы с помощью Acrobat Reader, я получаю сообщение об ошибке «недостаточно данных для изображения».Когда я просматриваю документы с помощью FoxIT Reader, я получаю несколько пустых страниц и обнаженное изображение.

Единственная странная вещь в PDF, которая создает пустые страницы, - это то, что это PDF версия 1.4, а PyPdf создает файлы с PDF версии 1.3.

1) Есть ли версия?это похоже на основную причину моей проблемы?

2) Есть ли способ заставить PyPdf справиться с этим правильно?

Ответы [ 3 ]

2 голосов
/ 13 апреля 2012

Это может быть связано с Windows, а не с PDF-файлом.

http://support.microsoft.com/kb/2506795

Удачи!

2 голосов
/ 18 января 2013

У меня была эта проблема, и я смог ее решить, посмотрев оригинальный PDF-файл рядом с PyPDF в шестнадцатеричном редакторе.

Проблема, похоже, заключается в том, что PyPDF фактически пропускает байт - похоже, отсутствует первый байт в каждом потоке изображения. Когда я добавил байты в файл PyPDF, файл PDF открылся без ошибок.

1 голос
/ 01 февраля 2011

Я подозреваю, что поток изображения XObject имеет неправильный формат.Без доступа к PDF с этой проблемой большинство людей могут только догадываться.

Например, если в информации PDF указано, что изображение имеет ширину 10 пикселей, высоту 10 пикселей и 8 бит на пиксель, топоток должен распаковываться до 100 байт.Если он будет распакован до меньшего значения, я бы ожидал ошибку, подобную той, которую вы видите.

Вероятно, это ошибка в pypdf относительно формата изображения, который вы используете.

IIRC, в PDF нет строковых отступов и не заботятся о границах слов, хотя последние биты дополняются до байта, если это необходимо.Путаница может легко привести к слишком большому количеству байтов, что не является проблемой.

Это также может быть плохое цветовое пространство.Если у вас есть индексированное цветное изображение (gif), и они переводят его на полпути к RGB-изображению, но используют оригинальные индексированные цветные байты, вы получите поток, который может ожидать n * 3 бит на пиксель, но толькоиметь n бит на пиксель.

Возможно, это старая ошибка, исправленная в pypdf.Вы используете текущую версию?

...