在运行Ghostscript处理时如何在PDF中保留未处理的页面?

我正在运行一个gs脚本,该脚本将PDF页面的范围转换为灰度。完成后,它将通过删除-sPageList参数中未提供的页面来生成输出文件。

gs是否可以保留未处理的页面?我已经阅读了在线文档,但找不到答案。 man gs也没有帮助。

脚本

#!/bin/bash

gs \
 -sOutputFile=output.pdf \
 -sDEVICE=pdfwrite \
 -sColorConversionStrategy=Gray \
 -sPageList=1-37,39-42,44,45,47-60,63-67,69-71,73-80,82,85-116,119,122-142,145-147,149-199,201-215,218,220,221,225,227-232,235,237,240- \
 -dProcessColorModel=/DeviceGray \
 -dCompatibilityLevel=1.4 \
 -dNOPAUSE \
 -dBATCH \
 $1
sheng13love 回答:在运行Ghostscript处理时如何在PDF中保留未处理的页面?

否。

如果您从输入中处理页面然后到达输出,则描述here pdfwrite设备的工作方式,如果您没有从输入中处理页面则不能到达输出。所有选项都将应用于所有输入页面。

因此,您不能选择只将某些页面转换为灰色,而另一些页面保持不变,这正是我认为的要求。

您可以每页生成一个灰色PDF文件,然后使用类似的方法在每页未更改的输出中生成一个PDF文件。然后,您可以创建一个脚本,该脚本以所需的顺序处理每个单独的PDF文件,以创建最终的PDF文件,并以正确的顺序显示所有页面。

这是一个简化的示例,考虑到一个4页的文件,我们希望保留第3页不变,而将其他页面设为灰色:

首先处理所有灰色页面:

gs \
 -sOutputFile=gray/output%d.pdf \
 -sDEVICE=pdfwrite \
 -sColorConversionStrategy=Gray \
 -sPageList=1,2,4 \
 -dProcessColorModel=/DeviceGray \
 -dCompatibilityLevel=1.4 \
 -dNOPAUSE \
 -dBATCH \
 input.pdf

然后产生所有其他页面:

gs \
 -sOutputFile=original/output%d.pdf \
 -sDEVICE=pdfwrite \
 -sPageList=3
 -dNOPAUSE \
 -dBATCH \
 input.pdf

然后最后将所有页面缝起来:

gs \
 -sOutputFile=output.pdf \
 -sDEVICE=pdfwrite \
 -dNOPAUSE \
 -dBATCH \
 gray/output1.pdf gray/output2.pdf original/output1.pdf gray/output3.pdf

足够复杂(页数)的文件将超出shell的行长,在这种情况下,您可以查看@file语法,将整个命令行放入文件中,并告诉Ghostscript使用文件内容用于命令行。

不,您不能更改%d语法,以便设备使用页码写入输出文件,这不是编号的工作方式,它始终从1开始。

本文链接:https://www.f2er.com/3076691.html

大家都在问