创建小型高质量PDF嵌入优化PNG?

时间:2017-03-01 11:25:54

标签: pdf-generation wkhtmltopdf export-to-pdf libreoffice-writer

我正在尝试创建一个小型PDF文件,在3页PDF上嵌入一个优化的PNG图像作为页眉和页脚显示(相同的图像必须在PDF中显示6倍)

我的优化PNG图片仅为2.3KB。它看起来非常清晰。

libreoffice失败

当我只将2.3KB PNG图像的一个实例插入到仅包含文本的Libreoffice Writer文档中时,然后导出为PDF我可以看到图像被重新压缩为JPG,生成的PDF文件增长了大约40KB添加图像。它也会失去质量,PNG也会获得JPG模糊边缘。

如果我右键单击图像并选择压缩,则无法禁用重新压缩图像(它已经比libreoffice更好地优化了)我尝试设置压缩级别为0,1,9等。选择JPG,没有调整大小,无损等,但没有任何改进。

wkhtmltopdf失败

我也试过制作一个测试页面并使用了wkhtml2pdf,但它做了同样的事情。添加低质量标志没有任何区别。

PDF Spec建议支持PNG?

从略读PDF spec,看起来支持PNG图像。

即使纯文本PDF文件也非常大

令人失望的是,当我拿一个7KB的HTML文件时,基本上只有<html><body><p>foo...</p><p>bar...</p>(只有大约15个段落)没有CSS。生成的2页PDF文件为30KB。为什么一个7kb(几乎是纯文本)文件变成30kb作为PDF?

建议吗

有人可以建议如何在Linux中制作一个小PDF文件吗? 我需要包含7KB的文本并重复一次PNG图像。

手动或编程。我会抓住我能得到的任何东西。

2 个答案:

答案 0 :(得分:2)

  

PDF Spec建议支持PNG?

本身不支持PNG; PDF允许按原样嵌入JPEG图像,但不允许嵌入PNG图像。但是,PDF确实借用了PNG格式的一组功能。

rinohtype(完全披露:我是作者)试图尽可能多地将PNG图像嵌入到PDF中。例如,这确实涉及将alpha通道与颜色数据分开的一些比特杂乱,但是不执行图像的重新编码。它(尚未)支持隔行扫描的PNG。

rinohtype应该能够做你想要达到的目标。但请注意,它目前处于测试阶段,因此您可能会遇到一些错误。

  

即使纯文本PDF文件也非常大

要使PDF大小尽可能小,请确保不要嵌入/子集任何字体。仅使用PDF阅读器提供的base 14 PDF fonts字体。

答案 1 :(得分:1)

你想要的是肯定可以实现的。关于图像质量,我建议您将图像尺寸设置为您想要在PDF中实际显示的尺寸的两倍,以使其看起来清晰。

关于尺寸,我刚刚修改了我的PDF编写器模块(WIP ..)中的测试,包括一个7.2K png,200px x 70px,PDF格式两次,PDF格式为6.8K 8)。包含的文字不多,但更多的文字只会增加它的价值+一小部分。

您可以在此处查看模块和原始测试。https://github.com/DoccaPDF/docca-pdf-writer/blob/master/src/tests/writer.js#L40 该测试为PDF添加了大约112K的图像,并产生了103K的PDF。

当然并非所有图像都是相同的,所以你的版本可能会有所不同......

*图像实际上只添加到PDF一次,但会多次显示。