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

Create small high quality PDF embedding optimized PNG?

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

我优化后的PNG图片只有2.3KB。看起来很锋利。

libreoffice 失败

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

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

wkhtmltopdf 失败

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

PDF 规范提示支持 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 图片 6 次。

手动或以编程方式。我会尽我所能。

PDF Spec suggests PNG is supported?

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

rinohtype(完全公开:我是作者)尝试将尽可能多的 PNG 图像按原样嵌入到 PDF 中。这确实涉及一些位杂耍,例如将 alpha 通道与颜色数据分开,但不执行图像的重新编码。它(还)不支持隔行扫描的 PNG。

rinohtype应该可以实现你想要的效果。但请注意,它目前处于测试阶段,因此您可能会遇到一些错误。

Even plain text PDF files are surprisingly large

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

你想要的,当然可以实现。关于图像质量,我建议您将图像的大小设为您希望它在 PDF 中实际显示的大小的两倍,以保持图像清晰。

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

你可以在这里看到模块和原始测试.. https://github.com/DoccaPDF/docca-pdf-writer/blob/master/src/tests/writer.js#L40 该测试将约 112K 的图像添加到 PDF 并生成 103K 的 PDF。

当然并不是所有的图像都是一样的,所以你的里程数可能会有所不同..

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