Основная проблема заключается в том, что Zend_Pdf_Page
использует атрибуты Media Box для вычисления ширины и высоты каждой страницы, а не (в данном конкретном случае) Box Crop. Для дальнейшего объяснения различных полей, смотрите эту ссылку: http://www.prepressure.com/pdf/basics/page_boxes
Одним из возможных решений в вашем случае было бы исправление Zend_Pdf_Page
так, чтобы оно использовало значения поля кадрирования, когда они доступны, в противном случае возвращает значения поля мультимедиа. Код используется в методах getHeight()
и getWidth()
, которые начинаются примерно со строки 459 в ZF 1.1.11.
Однако я недостаточно опытен, чтобы сказать, является ли постоянное использование Crop Box хорошей идеей или нет. Возможно, кто-то еще может прокомментировать это? По вышеупомянутой ссылке у меня сложилось впечатление, что Trim Box может быть лучшим вариантом, но я не думаю, что образец PDF, на который вы ссылались, содержит эти данные.
Верите ли вы в правильность текущего поведения Zend_Pdf_Page
или нет, зависит от определений. Хотите ли вы размер всего холста, т.е. лист бумаги, который вы позже можете физически обрезать (вы можете захотеть узнать это, чтобы добавить примечания к части страницы, не предназначенной для печати), или область просмотра, которую вы обычно ожидаете увидеть на экране ? Правильный ответ, вероятно, и то и другое: Zend_Pdf_Page
, вероятно, требуется больше методов или, по крайней мере, параметр, добавленный к getWidth()
и getHeight()
, который позволяет вызывающей стороне точно указывать, какие измерения им интересны. Я быстро взглянул на трекер проблем ZF и ничего не смог найти по этому поводу, поэтому я добавлю тикет. По крайней мере, блок документации должен упомянуть, что он возвращает размер Media Box, и побудить пользователей понять, что это значит.
В конечном счете, на вашем месте я бы, вероятно, пошел и исправил Zend_Pdf_Page
, чтобы при наличии Crop Box он возвращал этот размер, в противном случае он возвращает Media Box. И если вы хотите внести этот патч, ваше путешествие начинается здесь: http://framework.zend.com/wiki/display/ZFDEV/Contributing+to+Zend+Framework: -)