Установить PDF для печати без масштабирования - PullRequest
11 голосов
/ 18 января 2011

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

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

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

Ответы [ 7 ]

9 голосов
/ 09 декабря 2011

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

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

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

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

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

7 голосов
/ 09 ноября 2011

Масштабирование печати можно отключить для отдельных файлов 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

для тех, которые используют опцию сжатия по умолчанию.

2 голосов
/ 11 августа 2013

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

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

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

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

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

2 голосов
/ 18 января 2011

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

0 голосов
/ 03 июня 2011

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

Перейдите в tcpdf.php и измените строку 8529 в методе _putpages следующим образом

изменение

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

в

$boxes = array('MediaBox');

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

0 голосов
/ 03 июня 2011

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

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

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

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

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

Я сравнил читаемые части моих двух 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
0 голосов
/ 18 января 2011

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

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

...