У меня проблемы с пониманием и, следовательно, с решением следующей проблемы. Я создаю динамический PDF-файл, используя рисунки, шрифты и изображения, используя структуру Zend (Zend_Pdf). Проблема с изображениями. Я вставляю JPG без сжатия, но он всегда искажается в Adobe PDF Reader. Я пытался использовать другое значение DPI изображения, масштабировал и сохранял изображение перед встраиванием или сохранял исходный размер и масштабировал его только при встраивании в PDF, но результаты те же. Я действительно не понимаю, что не так или что еще я мог бы попробовать, поэтому я буду благодарен за любую помощь.
Изображение вставлено в PDF (оригинал здесь):
Когда я открываю PDF-файл в любом браузере (Chrome, FF, IE), он выглядит нормально, но в программе для чтения Adobe PDF я получаю следующее:
Я отметил поврежденные места. test.pdf можно посмотреть здесь. Может ли кто-нибудь помочь мне понять проблему?
ИЗМЕНИТЬ
После дальнейшей отладки это, похоже, связано с размером изображения и методом Zend_Pdf::drawImage()
.
Ожидаемый размер изображения в PDF должен быть примерно 168x120 пикселей на основе предоставленных мной координат, однако фактический размер в PDF намного больше. Разница около 35%.
Я считаю, что изображение повреждено, но я до сих пор не понимаю, какие координаты я должен использовать, чтобы отобразить нужный размер пикселя... В основном я использую этот шаблон:
$page->drawImage($image, $x, ($y - 120), ($x + 168), $y);
Это неправильный способ вычисления координат?
РЕДАКТИРОВАТЬ 2:
Я также добавляю пример уже масштабированного изображения, встроенного в PDF с использованием его фактического размера (168x120 пикселей), чтобы показать, что размер изображения внутри PDF отличается или, по крайней мере, кажется, что он не имеет ожидаемого размера, хотя я использую код выше. Масштабированное изображение находится здесь, а окончательный PDF-файл — здесь. Это масштабированное изображение уже имело белую рамку до изменения размера, поэтому результат выглядит лучше.
ИЗМЕНИТЬ 3:
Чтобы уточнить желаемый размер изображения в пикселях внутри PDF. Есть макет, которому я должен следовать из-за печати. Спецификация макета указана в мм, и у меня есть точные области, где изображения должны быть расположены, и максимальная ширина/высота. т.е. максимальная ширина составляет 100 мм, что я рассчитал как 280 пикселей в документе с разрешением 72 пикселей на дюйм, аналогично высоте (42 мм = 119 пикселей). Также существует требование, чтобы встроенные изображения имели разрешение 300 DPI. И я думаю, что может быть проблема, но я все еще не понимаю, как мне пересчитать ширину/высоту в пунктах для PDF? Также рекомендуется вставлять большое изображение и рисовать его меньше или использовать масштабированное изображение и рисовать в его реальном размере? Я видел немного лучшие результаты на экране с изображениями с использованием 72DPI, поэтому возможно ли, что мне нужно будет создать 2 файла PDF, один только для печати и один только для экрана или браузера?
РЕДАКТИРОВАТЬ 4 (печать):
Я тестировал с печатью в 300 и 600 DPI. PDF-файл с полноразмерным изображением, масштабируемым при рисовании в PDF (этот ) нормально в обоих случаях. scaled.pdf очень плохо печатается с разрешением 300 DPI (даже немного красного цвета). видно по краям). Это вполне нормально для печати с разрешением 600 DPI, но очень размыто из-за растяжения. А растяжение вызвано неправильным размером точки изображения при рисовании, как я упоминал ранее.