GhostScript - 从前 5pt 获得 ink_cov?
GhostScript - get ink_cov from top 5pt?
我正在尝试从 PDF 的顶部 5pt 获取墨水覆盖率。
大多数时候,这个命令会在许多不同的 PDF 中给出相同的结果:
gs -o - -sDEVICE=ink_cov -dFirstPage=2 -dLastPage=2 -dAutoRotatePages=/None -g36340x5 "12345.pdf" | grep CMYK
这给了我 0.02477 这样的结果。
但有时,我会得到完全不同的结果,比如 0.57318
我承认我不完全确定 -g36340x5 表示前 5pt。可能是底部的 5pt 吗?
如果我 运行 以下命令,我认为 crop.pdf 会显示我想要的墨水覆盖范围,但它只显示空白 pdf。
gs -o crop.pdf -sDEVICE=pdfwrite -dFirstPage=2 -dLastPage=2 -dAutoRotatePages=/None -g36340x5 -f 12345.pdf
但是如果我 运行 这个命令,crop.pdf 会显示我想要获得墨水覆盖的部分:
gs -o crop.pdf -sDEVICE=pdfwrite -dFirstPage=2 -dLastPage=2 -dAutoRotatePages=/None -g36340x6120 -c "[/CropBox [0 607 3634 612] /PAGES pdfmark" -f 12345.pdf
但即便如此,当尝试使用 ink_cov-device 执行此命令时,我在类似的 pdf 上得到了非常不同的结果:
gs -o - -sDEVICE=ink_cov -dFirstPage=2 -dLastPage=2 -dAutoRotatePages=/None -g36340x6120 -c "[/CropBox [0 607 3634 612] /PAGES pdfmark" -f 12345.pdf
我所有的 pdf 都是颠倒的。
我做错了什么?
最好的问候
尼克拉斯
-g 设置媒体大小 以像素为单位 ,它不会尝试重新定位媒体上的内容。由于 PostScript 坐标在左下角有 0.0,因此您只查看输出的底部 5 个像素。
您的第三个示例使用 pdfwrite 创建一个 PDF 文件,其中 cropbox 覆盖了您感兴趣的区域。但是,默认情况下,Ghostscript 在渲染时使用 MediaBox。如果你想使用 CropBox 那么你需要添加 -dUseCropBox 到你的命令行。如果你不这样做(因为你的最后一个命令没有)那么它仍然会检查与原始 PDF 相同的内容。
您需要设置与您感兴趣的媒体大小相匹配的媒体大小,和 翻译页面原点(这很难做到,因为这意味着改变PDF 解释器,你如何使用 PostScript 编程?)或者你需要使用 CropBox 创建一个新的 PDF,就像你上面所做的那样,然后使用 inkcov 设备处理该 PDF 文件,但添加 -dUseCropBox(并丢弃现在冗余-g)
如果您渲染到屏幕而不是使用 inkcov,您可能会发现更容易看到发生了什么,然后您可以更改参数并查看它们的效果。一旦您确信您正在使用您想要的区域,那么您可以切换 ot inkcov 设备。
我正在尝试从 PDF 的顶部 5pt 获取墨水覆盖率。 大多数时候,这个命令会在许多不同的 PDF 中给出相同的结果:
gs -o - -sDEVICE=ink_cov -dFirstPage=2 -dLastPage=2 -dAutoRotatePages=/None -g36340x5 "12345.pdf" | grep CMYK
这给了我 0.02477 这样的结果。 但有时,我会得到完全不同的结果,比如 0.57318
我承认我不完全确定 -g36340x5 表示前 5pt。可能是底部的 5pt 吗? 如果我 运行 以下命令,我认为 crop.pdf 会显示我想要的墨水覆盖范围,但它只显示空白 pdf。
gs -o crop.pdf -sDEVICE=pdfwrite -dFirstPage=2 -dLastPage=2 -dAutoRotatePages=/None -g36340x5 -f 12345.pdf
但是如果我 运行 这个命令,crop.pdf 会显示我想要获得墨水覆盖的部分:
gs -o crop.pdf -sDEVICE=pdfwrite -dFirstPage=2 -dLastPage=2 -dAutoRotatePages=/None -g36340x6120 -c "[/CropBox [0 607 3634 612] /PAGES pdfmark" -f 12345.pdf
但即便如此,当尝试使用 ink_cov-device 执行此命令时,我在类似的 pdf 上得到了非常不同的结果:
gs -o - -sDEVICE=ink_cov -dFirstPage=2 -dLastPage=2 -dAutoRotatePages=/None -g36340x6120 -c "[/CropBox [0 607 3634 612] /PAGES pdfmark" -f 12345.pdf
我所有的 pdf 都是颠倒的。
我做错了什么?
最好的问候 尼克拉斯
-g 设置媒体大小 以像素为单位 ,它不会尝试重新定位媒体上的内容。由于 PostScript 坐标在左下角有 0.0,因此您只查看输出的底部 5 个像素。
您的第三个示例使用 pdfwrite 创建一个 PDF 文件,其中 cropbox 覆盖了您感兴趣的区域。但是,默认情况下,Ghostscript 在渲染时使用 MediaBox。如果你想使用 CropBox 那么你需要添加 -dUseCropBox 到你的命令行。如果你不这样做(因为你的最后一个命令没有)那么它仍然会检查与原始 PDF 相同的内容。
您需要设置与您感兴趣的媒体大小相匹配的媒体大小,和 翻译页面原点(这很难做到,因为这意味着改变PDF 解释器,你如何使用 PostScript 编程?)或者你需要使用 CropBox 创建一个新的 PDF,就像你上面所做的那样,然后使用 inkcov 设备处理该 PDF 文件,但添加 -dUseCropBox(并丢弃现在冗余-g)
如果您渲染到屏幕而不是使用 inkcov,您可能会发现更容易看到发生了什么,然后您可以更改参数并查看它们的效果。一旦您确信您正在使用您想要的区域,那么您可以切换 ot inkcov 设备。