2011-01-18 3 views
10

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

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

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

ответ

2

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

+0

Благодарим вас за ответ. Это что-то, что может быть достигнуто путем написания плагина и установки пользователем плагина? – JCam

+0

Вы можете отправить свой собственный просмотрщик или плагин, но это будет очень много работы, и вы должны были бы гарантировать, что пользователь должен был его использовать. –

+7

Этот ответ вводит в заблуждение. Существует способ встроить предпочтение в файл, чтобы запросить масштабирование. Большинство PDF-приложений будут соблюдать предпочтение, а не масштабировать документ в результате. – lukecyca

0

хорошо я не уверен, если вы имеете в виду somethink как это: 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); 
+0

Это полезно, но я ищу что-то другое. Я обновил сообщение, чтобы быть немного более ясным. Спасибо за предложение. – JCam

0

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

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

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

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

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

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

Здесь содержание минимального 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

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

Goto tcpdf.PHP и изменить строки 8529 в методе _putpages следующего

изменение

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

в

$boxes = array('MediaBox'); 

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

6

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

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

+0

Привет, это немного растягивается, но как бы я использовал это с Exiftool - http://www.sno.phy.queensu.ca/~phil/exiftool/ – BelgoCanadian

8

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

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

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

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

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

+1

Вариант этого сработал для меня. Я подклассифицировал FPDF и overrode _putcatalog() для вывода «/ ViewerPreferences <>» после его существующего вывода. – lukecyca

+0

Когда я использовал «setViewerPreferences» ReportLab ('PrintScaling', 'None') '', он сгенерировал строку ''/ViewerPreferences 12 0 R'' и добавил '' 12 0 obj <> '' далее вниз по странице. Другое возможное значение похоже на ''/PrintScaling/AppDefault''. –

2

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

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

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

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

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

+0

Где в функции вы положили это? В конце или по предложению onosenday, после выхода «/ Type/Catalog»? –

Смежные вопросы