Tamkovich.com: Телеком/VoIP блог
Современные технологии: Asterisk, SIP, Kamailio, Linux, Cisco, Linksys
Чёрные полосы в выводе программы PDFTOHTML
16 мая, 2011 by rius
Программирование opensourceСуществует замечательная программа под название PDFTOHTML. С её помощью можно просматривать PDF документы даже на таких системах где сроду не было Adobe Acrobat (приставки, телевизоры и т.д.). Однако существует большое количество разнообразных PDF документов. Не со всеми из них PDFTOHTML справляется одинаково хорошо.
Мне пришлось столкнуться с ситуацией, когда файл после обработки программой выглядел как секретный документ, который рассекречен лишь частично :) Примерно так:
Сначала я было подумал, что проблема где-то в обработке символов Unicode – исходный PDF содержал текст с нелатинскими символами. Но после изучения этого файла в редакторе, я понял, что это не так. Весь нелатинский текст был сохранен как изображения — несколько десятков маленьких картинок на каждой странице. И проблема оказалось именно в этих картинках.
У каждой картинки есть набор атрибутов. Среди них — два размера по осям в дюймах, и еще два — в пикселях. Вот эти-то пиксельные размеры и не соответствуют действительности — 2х2 пикселя:

И как следствие — неправильно рассчитывается размер картинки — 2 байта. Видимо PDFTOHTML использует их для обработки файла, в то время как для отображения документа в редакторах берется разрешение в дюймах.
Решение проблемы такое. Я открыл PDF в редакторе и «распечатал» его через виртуальный принтер Adobe PDF (он добавляется при установке Adobe Reader). Подобные виртуальные принтеры создают и другие редакторы. Но без регистрации они норовят добавить свой водяной знак на каждую страницу документа. Так вот. После «распечатки», разрешения у изображений стали корректными и файл был успешно обработан программой PDFTOHTML

Картинка получила нормальное разрешение. Размер тоже стал адекватным — 11 Кбайт
Программирование opensource
Столкнулась с данной проблемой в iOs. Очень ценная рекомендация по открытию через ридер. Черные полосы исчезли. Спасибо!