CFDocument PDF — заголовок обрезается при печати

У меня есть PDF-файл, который я создаю с помощью тега CFDocument. Когда он генерирует PDF, и вы нажимаете значок «принтер», чтобы открыть диалоговое окно печати. Для параметра «Размер страницы и обработка», если для него установлено значение «По размеру» или «Уменьшать негабаритные страницы», он печатается нормально. Если выбран «Реальный размер», заголовок смещается за пределы страницы и обрезается. Я использую ColdFusion 11 в Windows 7.

Чтобы воссоздать это, я удалил все свои стили и провел простой тест со следующим базовым кодом:

<cfdocument format="PDF" saveAsName="test_#dateFormat(now(),'yyyymmdd')#T#timeFormat(now(),'hhmmss')#.pdf">
   <cfdocumentitem type="header">HEADER</cfdocumentitem>
   <cfdocumentsection>
       BODY
   </cfdocumentsection>
   <cfdocumentitem type="footer">
       #cfdocument.currentpagenumber# / #cfdocument.totalpagecount#
   </cfdocumentitem>
</cfdocument>

Что создает следующий PDF-файл: PDF создан

Затем я нажимаю значок «Принтер», который открывает настройки принтера: Уменьшить негабаритные страницы

Если вы внимательно посмотрите на изображение предварительного просмотра в диалоговом окне, вы увидите, что текст заголовка находится внутри документа. Теперь, если я вместо этого выберу «Фактический размер», это даст следующее: Фактический размер

Если вы посмотрите на предварительный просмотр, на этот раз вы увидите, что все сместилось вверх, а заголовок частично выходит за пределы документа, в результате чего половина заголовка обрезается и становится неразборчивой при печати.

Кто-нибудь знает, почему это происходит и как это исправить?


person yaki33    schedule 23.12.2015    source источник
comment
Проверьте атрибуты тега cfdocument, особенно pageType и margin.   -  person Alex    schedule 24.12.2015
comment
Атрибут margintop не работал. Все, что он сделал, это увеличил заголовок и увеличил шрифт. Как только я выбираю Фактический размер, он все равно смещается со страницы. Я также попробовал атрибут масштаба с тем же результатом, когда я выбираю Фактический размер   -  person yaki33    schedule 24.12.2015
comment
cfdocument всегда был немного странным. Противно говорить, но вы пробовали старый хак div, чтобы добавить поле заголовка? то есть <div style="margin-top: 10px">HEADER</div> .   -  person Leigh    schedule 31.12.2015
comment
Да, я пробовал трюк с div, но это не сработало. В конце концов я немного отрегулировал pageHeight и pageWidth, чтобы заставить его работать.   -  person yaki33    schedule 01.01.2016
comment
Странно, похоже, у меня сработало в похожей среде. Рад, что вы нашли работу вокруг. Вы можете поискать в базе данных ошибок, чтобы узнать, является ли это известной проблемой.   -  person Leigh    schedule 01.01.2016


Ответы (2)


Чтобы исправить это, я поэкспериментировал с параметрами pageWidth и pageHeight вместе с атрибутами pageType в CFDocument.

<cfdocument format="PDF" pageType="custom" pageWidth="8.5" pageHeight="10.75" saveAsName="test_#dateFormat(now(),'yyyymmdd')#T#timeFormat(now(),'hhmmss')#.pdf">
   <cfdocumentitem type="header">HEADER</cfdocumentitem>
   <cfdocumentsection>
       BODY
   </cfdocumentsection>
   <cfdocumentitem type="footer">
       #cfdocument.currentpagenumber# / #cfdocument.totalpagecount#
   </cfdocumentitem>
</cfdocument>

Стандартный размер букв составляет 8,5 х 11 дюймов (по умолчанию в CFDocument), поэтому я немного изменил высоту до 10,75 дюймов, и заголовок остался в границах страницы, даже когда я нажал «Фактический размер» в диалоговом окне печати. странно, что я должен сделать это, чтобы заголовок помещался на странице, не обрезаясь, но это работает. Дальнейшая регулировка высоты просто слишком сильно масштабирует заголовок и выглядит не очень хорошо, поэтому я выбрал 10,75 дюйма.

person yaki33    schedule 01.01.2016

Честно говоря, использование тегов cfdocument для меня было не чем иным, как жестокостью. Если вы можете использовать внешние инструменты, чтобы сделать то же самое (другими словами, если ваш бизнес и системные администраторы разрешат вам их использовать), я бы предложил использовать WKHTMLToPDF. Подробнее об этом можно узнать здесь: http://wkhtmltopdf.org/

Я должен сказать, что нам очень повезло с этим инструментом. Он также работает на разных платформах, если это имеет значение в вашей среде.

Надеюсь это поможет.

person Johann S    schedule 31.12.2015
comment
Да, я пробовал WKHTMLToPDF, но проблема в том, что он не обрабатывает повторяющиеся заголовки. Если содержимое документа перейдет на следующую страницу, заголовок не будет повторяться, и его придется обрабатывать вручную, что сложно сделать, учитывая, что данные, которые вводит клиент, не могут быть предсказаны, и они могут иметь 1 или несколько страниц. - person yaki33; 01.01.2016
comment
Я только что посмотрел документацию здесь: madalgo.au.dk /~jakobt/wkhtmltoxdoc/wkhtmltopdf-0.9.9-doc.html Похоже, вы можете создать повторяющийся верхний и/или нижний колонтитул. Надеюсь, это поможет! - person Johann S; 05.01.2016