将PDF设置为无缩放打印

时间:2011-01-18 15:12:13

标签: pdf printing fpdf

我正在生成一个PDF(使用fpdf),我想知道是否有办法将文档的属性设置为默认打印而不进行缩放。

因此,当您从打印对话框菜单中选择打印时,缩放设置为无。我正在尝试确定这是用户设置还是我可以在创建PDF时控制的内容。

提前致谢。

7 个答案:

答案 0 :(得分:8)

我已经完成了以下方法_putcatalog()的添加:

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

行后:

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

实施方法既快捷又简单......

答案 1 :(得分:6)

使用Adobe Acrobat可以关闭单个PDF文件的打印缩放,转到文件 - >偏好 - >高级 - >页面缩放。 (您可以使用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 :(得分:2)

缩放由PDF应用程序控制 - 它未在文件中设置。

答案 3 :(得分:2)

我改变FPDF Catalog方法_putcatalog()并添加

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

没有完成目标所以我查看了Acrobate XI PDF生成的代码,发现了更多的问题。添加以下代码

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

创建了一个不再默认为缩放的PDF,而只是提供了打印实际尺寸的选项。

答案 4 :(得分:0)

嗯,我不确定你的意思是否是这样的: 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);

答案 5 :(得分:0)

我遇到了同样的问题。

我有几个PDF,其中PDF的内容,即文本和图像,非常接近PDF边框,但仍然是打印对话预览/ Acrobat建议以100%缩放打印它,从而切断不是'的内容由于打印机的自然利润,可打印。

在页面中创建任何PDF,例如结果为PDF,默认情况下以100%缩放打印。

但是,如果我使用与FPDF相关的TCPDF创建PDF,而不是打印机对话框建议缩放它以适合页面。

我怀疑PDF的创建方式是不同的。我怀疑Pages和其他工具会创建单独的图层,然后它们会以不同方式进行处理,可能是通过标记或其他内容。

我比较了两个PDF文件的可读部分,并且确实遇到了一些差异,特别是文档的开始方式。我对PDF-Sources的了解非常有限,所以我只能猜测需要改变什么。 是否有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

答案 6 :(得分:0)

好的,我想我明白了。 试试这个:打开你的TCPDF创建的PDF并删除所有发现的viewerpreferences和除MediaBox之外的任何box语句......这样做最终导致了print-default-scaling-free PDF :) 像专业印刷这样的附加信息接缝 - 只会混淆普通的pdf-viewer,而不是帮助做任何事情:)

转到tcpdf.php并更改方法_putpages中的第8529行,如下所示

变化

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

$boxes = array('MediaBox');

在我的PDF输出中,这立即消除了缩放问题:)