我必须自动对PDF文档进行预检检查。预检包括:
只是想知道是否可以使用PoDoFo或其他任何开源项目来完成。或者,如果我真的需要订购一些介于$ 2K到$ 6K之间的专有软件。我的托管环境在Linux上,支持PHP,Perl,Python,Ruby,Java。
有什么想法吗?
答案 0 :(得分:5)
我不知道任何现成的开源软件符合您的要求。
只有部分内容可以通过编写自己的shell脚本(或其他程序)来解决。
检测图像的分辨率。
运行pdfimages -list some.pdf
以输出PDF中包含的图像列表及其尺寸......貌似。但是关于它的不明显的是:这些维度是原始图像的维度(嵌入在PDF中)。这可能是720x720像素。但是,如果渲染到页面的10x10英寸的正方形上,则该图像将在页面上为72 DPI。如果在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预检软件会根据特殊属性的'检查'结果应用选择性'修正')。
最后,我不知道是什么让你认为你必须花费2美元到6,000美元,以防你不得不求助于闭源商业预检软件。 (我在这个领域最喜欢的是非常强大的callas pdfToolbox6(甚至有一个在Linux上作为CLI运行的版本) - 它的基本版本需要500欧元。)
答案 1 :(得分:3)
我的背景是印刷,所以在阅读我的答案时请记住这一点。你打算做的项目似乎有些直截了当,但是当你深入了解它时,有很多印刷行业的知识可以用于这些操作。
以下是对您的要点的一些快速反馈:
您不希望将低分辨率图像上采样到300 dpi,因为它会降低图像质量(通过重新插值)并增加文件大小。
您需要注意颜色转换。可能存在某些RGB格式,您只想将其转换为黑色。或者,如果某人提供的文件已经是cmyk并且标记有错误的个人资料,会发生什么。
字体检测 - 替换字体非常复杂。如果您没有与发起人完全相同的字体,最终可能会出现文本重排问题。要拥有该字体,您必须支付许可费用。如果不嵌入字体,也无法将字体转换为轮廓。
我的建议是查看预检的商业套餐。这些开发人员花了数年时间开发他们的程序,并且是打印领域的专家。具有挑战性的部分将是找到基于您的价格范围的unix。大多数是专为Windows或Mac设计的。 Callas有一个linux cl版本,但没有列出价格。你需要服务器版本。
您打算通过它运行什么类型的卷?
答案 2 :(得分:2)
您尝试过Enfocus PitStop Pro吗?根据您的具体要求联系他们的支持部门。他们有很多PDF preflight例子,很乐意帮助你。