Установка PDF для печати без масштабирования

я генерирую PDF (используя fpdf), и мне интересно, есть ли способ установить свойства документа по умолчанию для печати без масштабирования.

поэтому, когда вы выбираете печать из меню диалога печати, масштабирование устанавливается в нет. Я пытаюсь определить, является ли это пользовательским параметром или чем-то, что я могу контролировать при создании PDF.

спасибо заранее.

7 ответов


масштабирование контролируется приложением PDF - он не установлен в файле.


Я сделал это, добавив к методу _putcatalog() следующее:

$this->_out('/ViewerPreferences [/PrintScaling/None]');

после строки:

$this->_out('/Type /Catalog');

реализация метода просто быстро и легко...


печать-масштабирование можно отключить для файлов PDF с помощью Adobe Acrobat, перейдя в Файл - > Настройки - > Дополнительно - > масштабирование страницы. (Вы можете попробовать это, используя пробную версию Acrobat.)

Что касается достижения этого в коде, я пытался и не смог заставить его работать, но критическая разница в файлах, похоже,:

10 0 obj
<</Metadata 2 0 R/Outlines 6 0 R/Pages 7 0 R/Type/Catalog/ViewerPreferences<</PrintScaling/None>>>>
endobj

для не масштабируемых PDF-файлов по сравнению с

10 0 obj
<</Metadata 2 0 R/Outlines 6 0 R/Pages 7 0 R/Type/Catalog>>
endobj

для тех, кто использует параметр по умолчанию shrink-to-fit.


для меня изменение метода каталога FPDF _putcatalog () и добавление

    $this->_out('/ViewerPreferences [/PrintScaling/None]');

не достиг цели, поэтому я посмотрел на код, созданный ACROBATE XI PDF, и нашел еще несколько слов. Добавление следующего кода

    $this->_out('/ViewerPreferences<</Duplex/Simplex/Enforce[/PrintScaling]/PrintScaling/None>>');

создал PDF, который больше не по умолчанию масштабировался и вместо этого только дал возможность печатать фактический размер, который был желаемым.


ну, я не уверен, что вы имеете в виду что-то вроде этого: http://www.fpdf.org/en/doc/setdisplaymode.htm

или нет "масштабирования" для изображений?

$im2 = pdf_open_image_file($dokument, 'jpeg', 'example.jpg');
pdf_place_image($dokument, $im2, 395, 655, 1.0); /* 1.0 = qualiti/scaling - 1.0 is original .../*
pdf_close_image($dokument, $im2);

я столкнулся с такой же проблемой.

У меня есть несколько PDF-файлов, где содержимое PDF, то есть текст и изображения, очень близко к границе PDF-файлов, но все же предварительный просмотр диалога печати/Acrobat предлагает печатать его в 100% - ном масштабировании, тем самым отрезая содержимое, которое не печатается из-за естественных полей принтеров.

создание любого PDF на страницах, например, приводит к PDF, который печатается в 100% масштабе по умолчанию.

однако, если я создам PDF использование TCPDF, который связан с FPDF, чем диалоговое окно принтера предлагает масштабировать его, чтобы соответствовать странице.

Я подозреваю, что способ создания PDF отличается. Я подозреваю, что страницы и другие инструменты создают отдельные слои, а затем они обрабатываются по-разному, возможно, флагом или чем-то еще.

Я сравнил читаемые части моих двух PDF-файлов и наткнулся на некоторые различия, особенно в том, как начинаются документы. Мои знания PDF-источников однако, очень ограничено, поэтому я могу только догадываться, что нужно изменить. Есть ли PDF-ссылка, где указано, как управлять объектами/областями печати?

здесь содержимое минимального PDF-файла, который будет напечатан без масштабирования:

%PDF-1.4
1 0 obj
<< /Type /Catalog
/Outlines 2 0 R
/Pages 3 0 R
>>
endobj
2 0 obj
<< /Type /Outlines
/Count 0
>>
endobj
3 0 obj
<< /Type /Pages
/Kids [4 0 R]
/Count 1
>>
endobj
4 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595 842]
/Contents 5 0 R
/Resources << /ProcSet 6 0 R
/Font << /F1 7 0 R >>
>>
>>
endobj
5 0 obj
<< /Length 73 >>
stream
BT
/F1 24 Tf
100 100 Td
(Hello World) Tj
ET
endstream
endobj
6 0 obj
[ /PDF /Text ]
endobj
7 0 obj
<< /Type /Font
/Subtype /Type1
/Name /F1
/BaseFont /Helvetica
/Encoding /MacRomanEncoding
>>
endobj
xref
0 8
0000000000 65535 f
0000000009 00000 n
0000000074 00000 n
0000000120 00000 n
0000000179 00000 n
0000000364 00000 n
0000000466 00000 n
0000000496 00000 n
trailer
<< /Size 8
/Root 1 0 R
>>
startxref
625
%%EOF

хорошо, думаю, я понял. Попробуйте это: откройте созданный TCPDF PDF и удалите все occurenecs viewerpreferences и любые box-операторы, кроме MediaBox... это, наконец, привело к печати по умолчанию без масштабирования PDF :) такие швы, как дополнительная информация, предназначенная для профессиональной печати, только путают общий pdf-viewer, а не помогают ни с чем:)

Goto tcpdf.php и изменить строку 8529 в методе _putpages как следует

изменить

$boxes = array('MediaBox', 'CropBox', 'BleedBox', 'TrimBox', 'ArtBox');

на

$boxes = array('MediaBox');

в моем PDF-выходе это мгновенно удалило проблему масштабирования:)