У меня есть приложение PHP, работающее с программой PDFlib для создания PDF-файлов. Версия 6 работает нормально в течение долгого времени. Мы собираемся заменить серверы и решили обновить до последней версии все программное обеспечение.
Ну, части программы, которые используют PDFlib для создания PDF-файлов, теперь создают PDF-файлы, которые, по мнению Acrobat, «повреждены и не подлежат восстановлению». Как ни странно, Firefox просто открывает файл с помощью плагина Adobe. Так же как и общий просмотрщик Ubuntu PDF. Но когда я загружаю PDF-файл и пытаюсь открыть его в Acrobat Reader или в полнофункциональном Acrobat, он говорит, что файл поврежден и не может быть восстановлен.
Кто-нибудь видел это раньше, или вы знаете, где я должен начать искать? Тот факт, что Firefox и Ubuntu могут читать его, говорит мне, что он не может быть ТАК поврежден. На самом деле это выглядит отлично для тех читателей со всей графикой, разноцветным текстом, шрифтами и всем прочим. Это должно быть что-то глупое.
РЕДАКТИРОВАТЬ:
Хорошо, я разобрал PHP-файл, генерирующий плохой PDF, толькоНачать документ«,»Начальная страница«,»Конечная страница«,»Конечный документ«и не получил ошибок. Затем я добавил в одну из фоновых загрузок изображения и обнаружил первую проблему.
$bgImageUrl = $_SERVER['DOCUMENT_ROOT'] ."path/to/fadedBG2.png";
$bgImageData = file_get_contents($bgImageUrl);
$p->create_pvf("/pvf/bgImageData", $bgImageData, "");
$bgImage = $p->load_image("auto", "/pvf/bgImageData" , "");
Эта последняя строка вызывает повреждение файла. Я скопировал этот код прямо с веб-сайта pdfLib, поэтому я не уверен, что здесь происходит.
Благодаря некоторым людям поддержки я нашел способ сделать эту работу. Добавляем «compatibility = 1.4» к вызову begin_document () следующим образом:
$p->begin_document("", "compatibility=1.4")
Решает проблему.
Согласно представителям службы поддержки pdflib, между версиями программного обеспечения многое изменилось в формате PDF. Таким образом, добавление этой директивы совместимости заставляет программу поддерживать обратную совместимость с PDF.
Других решений пока нет …