使用PoDoFo或其他任何开源的PDF的预检程序?

use*_*627 5 printing pdf preflight podofo

我必须自动对PDF文档进行预检检查.预检包括:

  1. 检测现有文档中图像的分辨率,如果它们尚未达到该分辨率,则将其更改为300dpi.
  2. 检测图像的色彩空间,如果不是CMYK,则使用颜色配置文件将它们转换为CMYK.
  3. 检测字体是否嵌入现有PDF文档中,并通过替换字体来纠正此问题.(或绘制字体轮廓 - 我不确定这一部分).

只是想知道是否可以使用PoDoFo或其他任何开源项目来完成.或者,如果我真的需要订购一些介于$ 2K到$ 6K之间的专有软件.我的托管环境在Linux上,支持PHP,Perl,Python,Ruby,Java.

有任何想法吗?

Kur*_*fle 5

我不知道任何现成的开源软件满足您的要求.

只有一部分可以通过编写自己的shell脚本(或其他程序)来解决.

  1. 检测图像的分辨率.

    运行pdfimages -list some.pdf以输出PDF中包含的图像列表及其尺寸......看似.但是关于它的不明显的是:这些维度是原始图像的维度(嵌入在PDF中).这可能是720x720像素.但是,如果渲染到页面的10x10英寸的正方形上,则该图像将在页面上为72 DPI.如果在1x1英寸的正方形上渲染,则为720 DPI.PDF中的两种"渲染"类型都可以使用相同的嵌入原始图像,而当前"图形状态"的上下文决定了应用哪种类型.因此,要确定页面上显示的图像的实际DPI,需要进行一些额外的PDF解析...

    在任何情况下,您都可以告诉Ghostscript将图像重新采样到300 dpi,并为此使用"阈值".(Ghostscript永远不会"上采样"一个图像,只会对这些超出阈值的下采样进行下采样.上采样几乎从来没有意义 - 它只会炸掉文件大小,而不会提高质量.)

  2. 使用ICC配置文件将颜色转换为色彩空间CMYK.

    最新版本的Ghostscript可以做到这一点.另请参阅描述其对ICC支持的最新Ghostscript文档.

  3. 嵌入非嵌入字体.

    运行(并评估结果)pdffonts some.pdf将显示未嵌入哪些字体.

    Ghostscript可以嵌入非嵌入字体.

因此,一个满足您大部分要求的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
Run Code Online (Sandbox Code Playgroud)

此命令将对所有图像进行缩减采样,其分辨率高于双想要的分辨率(*ImageDownSampleThreshold=2).此外,它会将所有这些设置应用于任何输入文件(除非某些特殊的PDF预检软件会根据特殊属性的'检查'结果应用选择性'修正').

最后,我不知道是什么让你认为你必须花费2千美元到6千美元,以防你不得不求助于闭源商业预检软件.(我在这个领域最喜欢的是非常强大的callas pdfToolbox6(它甚至有一个在Linux上作为CLI运行的版本) - 它的基本版本需要500欧元.)