使用 PoDoFo 或其他任何开源的 PDF 预检程序? [关闭]
Posted
技术标签:
【中文标题】使用 PoDoFo 或其他任何开源的 PDF 预检程序? [关闭]【英文标题】:Preflight program for PDFs using PoDoFo or anything else open source? [closed] 【发布时间】:2012-09-21 13:59:42 【问题描述】:我必须自动对 PDF 文档进行预检。预检包括:
-
检测现有文档中图像的分辨率,如果它们尚未达到该分辨率,则将其更改为 300dpi。
检测图像的色彩空间,如果不是 CMYK,则使用颜色配置文件将它们转换为 CMYK。
检测现有 PDF 文档中是否嵌入了字体,并通过替换字体来解决此问题。 (或绘制字体轮廓——我不确定这部分)。
只是想知道这是否可以使用 PoDoFo 或任何其他开源项目来完成。或者,如果我真的需要在 2000 美元到 6000 美元之间订购一些合适的软件。我的托管环境在 Linux 上,支持 php、Perl、Python、Ruby、Java。
有什么想法吗?
【问题讨论】:
【参考方案1】:我不知道有任何现成的开源软件可以满足您的要求。
编写自己的shell脚本(或其他程序)只能解决一部分问题。
检测图像的分辨率。
运行 pdfimages -list some.pdf
以输出 PDF 中包含的图像列表以及它们的尺寸......看起来。但并不明显的是:这些尺寸是原始图像的尺寸(嵌入在 PDF 中)。这可能是 720x720 像素。但是,如果渲染到页面的 10x10 平方英寸,则此图像在页面上的 DPI 为 72。如果在 1x1 英寸的正方形上渲染,它将是 720 DPI。 PDF 中的两种“渲染”类型都可以从同一个嵌入的原始图像中进行,而当前“图形状态”的上下文决定了应用哪种类型。因此,要确定页面上显示的图像的实际 DPI,需要进行一些额外的 PDF 解析...
在任何情况下,您都可以告诉 Ghostscript 将图像重新采样到 300 dpi,并为此使用“阈值”。 (Ghostscript 永远不会对图像进行“上采样”,只会对超出阈值的图像进行下采样。上采样几乎没有任何意义——它只会扩大文件大小,而不会带来更高质量的回报。)
使用 ICC 配置文件将颜色转换为色彩空间 CMYK。
Ghostscript can do that 的最新版本。另请参阅描述其对 ICC 的支持的 most recent Ghostscript documentation。
嵌入非嵌入字体。
运行pdffonts some.pdf
(并评估其结果)将显示哪些字体未嵌入。
Ghostscript 可以embed un-embedded fonts.
所以一个可以满足您大部分需求的 Ghostscript 命令是:
gs \
-o cmyk.pdf \
-sDEVICE=pdfwrite \
-sColorConversionStrategy=CMYK \
-sProcessColorModel=DeviceCMYK \
-sOutputICCProfile=/path/to/your.icc \
-sColorImageDownsampleThreshold=2 \
-sColorImageDownsampleType=Bicubic \
-sColorImageResolution=300 \
-sGrayImageDownsampleThreshold=2 \
-sGrayImageDownsampleType=Bicubic \
-sGrayImageResolution=300 \
-sMonoImageDownsampleThreshold=2 \
-sMonoImageDownsampleType=Bicubic \
-sMonoImageResolution=1200 \
-dSubsetFonts=true \
-dEmbedAllFonts=true \
-sCannotEmbedFontPolicy=Error \
-c ".setpdfwrite<</NeverEmbed[ ]>> setdistillerparams" \
-f some.pdf
此命令将对分辨率高于两倍所需分辨率 (*ImageDownSampleThreshold=2
) 的所有图像进行下采样。它还将所有这些设置应用于任何输入文件(除非某些特殊的 PDF 预检软件会根据特殊属性的“检查”结果应用选择性“修复”)。
最后,我看不出是什么让您认为您必须花费 2000 至 6000 美元,以防您不得不求助于闭源的商业预检软件。 (我在这个领域最喜欢的是非常强大的callas pdfToolbox6(它甚至还有一个在 Linux 上作为 CLI 运行的版本)——它的基本版本需要 500 欧元。)
【讨论】:
为什么非常感谢您提供这些信息!我会试试看!至于闭源,我实际上也指的是 Callas。但是我需要的版本是适用于 unix 的 pdfToolbox CLI - 正如一位经销商告诉我的:“Pdf Toolbox Server CLI(8 Instances)包括第一年的 SMA 是 Euro4,798.8”,这使得它超过了 6000 美元!也许我需要回去问一个实例..【参考方案2】:我的背景是印刷,所以在阅读我的回答时请记住这一点。您提议的项目似乎有些直截了当,但当您深入了解其中的细节时,这些操作中包含大量印刷行业知识。
以下是对您的要点的一些快速反馈:
您不希望将低分辨率图像上采样到 300 dpi,因为它会降低图像质量(通过重新插值)并增加文件大小。
您需要小心颜色转换。您可能只想将某些 RGB 版本转换为黑色。或者,如果有人提供的文件已经是 cmyk 并且标记有错误的配置文件,会发生什么情况。
字体检测 - 替换字体非常复杂。如果您没有与原始字体完全相同的字体,则最终可能会出现文本重排问题。要拥有该字体,您必须支付许可证费用。您也不能在没有嵌入字体的情况下将字体转换为轮廓。
我的建议是查看用于预检的商业包。这些开发人员已投入数年时间来开发他们的程序,并且是印刷领域的专家。具有挑战性的部分将是在您的价格范围内找到那些是 unix 的。大多数都是为 Windows 或 Mac 设计的。 Callas 有一个 linux cl 版本,但没有列出的价格。您需要服务器版本。
您打算运行哪种类型的卷?
【讨论】:
谢谢。我也一直在查看来自 Qoppa 软件的Jfpdfprocess(使用他们的 API 大约需要 1300 美元)、Apago Inc's PDF Enhancer(CLI 服务器版本为 2K)、PDFLib、Enfocus Pit Stop Server(4000 美元)和PStill使用 PDFCheck。我们的计划是建立一个适当的 web2print 商店,提供数千种设计供用户定制。它将被大量使用。 我确实需要一个 linux CLI 版本,因为我们计划自动化预检,而不是手动处理它们。【参考方案3】:您是否尝试过 Enfocus PitStop Pro?根据您的具体要求联系他们的支持部门。他们有大量 PDF preflight 示例,很乐意为您提供帮助。
【讨论】:
您能否添加更多有关此应用程序的信息?它解决了 OP 需求,它是专有的还是开源的?以上是关于使用 PoDoFo 或其他任何开源的 PDF 预检程序? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章