【发布时间】:2023-04-05 07:22:01
【问题描述】:
我想使用单页 jpg,并尝试各种 pdf 压缩设置和其他设置(以分析生成的 pdf 大小和质量) - 任何人都可以为我提供合适的工具来执行此操作,以及任何有用的文档/指南?
【问题讨论】:
标签: pdf pdf-generation acrobat ghostscript
我想使用单页 jpg,并尝试各种 pdf 压缩设置和其他设置(以分析生成的 pdf 大小和质量) - 任何人都可以为我提供合适的工具来执行此操作,以及任何有用的文档/指南?
【问题讨论】:
标签: pdf pdf-generation acrobat ghostscript
Adobe Acrobat Distiller、Ghostscript,可能还有其他。 Acrobat 有自己的手册,Ghostscript 文档可以在以下位置找到:
http://svn.ghostscript.com/ghostscript/tags/ghostscript-9.02/doc/Ps2pdf.htm
对于当前版本的 PostScript 到 PDF 的转换(在开始之前将您的 JPEG 打印到 PostScript 文件)。
如果您的原件是 JPEG,那么最好的输出质量就是对它不做任何事情,只需将其包装成 PDF 语法即可。
如果您坚持对图像数据进行下采样(这是减小 JPEG 图像大小的唯一方法),那么建议您不要使用 DCT (JPEG) 压缩PDF 文件,因为这会引入令人反感的伪影。
您应该改用无损压缩方案,例如 *"Flate"。
您最好的选择是返回到未存储为 JPEG 的原始文件,在一个像样的图像应用程序中进行下采样,然后转换为 JPEG 并将其包装在 PDF 中。
【讨论】:
Docotic.Pdf library 可用于将 JPEG(带或不带重新压缩)添加到 PDF。
在将它们添加到 PDF 之前,请先查看显示 how to recompress images 的示例。借助该库,您也可以重新压缩现有图像。
免责声明:我为图书馆供应商 Bit Miracle 工作。
【讨论】:
如果您可以在 Windows 上使用 .NET,我的公司 Atalasoft 拥有用于创建图像 PDF 的工具。您可以使用如下代码轻松调整压缩:
public void WriteJpegPdf(AtalaImage image, Stream outStream)
{
PdfEncoder encoder = new PdfEncoder();
encoder.JpegQuality = 60; // 0 - 100
encoder.Save(outStream, image, PdfCompressionType.Jpeg);
}
这是达到 jpeg 质量的最简单方法。如果图像不是 24 位 rgb 或 8 位灰度,它将覆盖您的设置。
如果您关心对一堆文件进行编码,但希望对压缩进行细粒度控制,则编码器有一个事件 SetEncoderCompression,该事件在图像编码之前被调用,以便您查看编码器选择的内容,您可以覆盖如果你喜欢的话。
FWIW,我编写了大部分 PDF 编码器和导出实际 PDF 的底层。
【讨论】: