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

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

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

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

Ответ 1

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

Ответ 2

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

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

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

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

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

Ответ 3

Масштабирование печати можно отключить для отдельных PDF файлов с помощью Adobe Acrobat, выбрав File → Preferences → Advanced → Scale. (Вы можете попробовать это, используя пробную версию 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

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

Ответ 4

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

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

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

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

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

Ответ 5

ну, я не уверен, если вы имеете в виду что-то вроде этого: 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);

Ответ 6

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

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

Ответ 7

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

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

изменить

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

в

$boxes = array('MediaBox');

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