如何将postscript文件执行到特定的页码?

时间:2012-03-20 05:56:50

标签: pdf ghostscript postscript

我有100行的postscript文件。我试图在ghostscript的帮助下将2个pdfs合并到单个pdf中。我想要做的是,将两个pdf合并为一个,然后以下列方式应用我的postscript代码:

1)后记文件的前50行应仅应用于生成的pdf的第1页

2)在生成的pdf的第2页上应用剩余的50行。

我使用以下代码来执行此操作:

gs -q -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=output.pdf test.ps pdf_1.pdf pdf_2.pdf;

我已经尝试了postscript的showpage选项,但是在生成的输出pdf中插入了一个空白页面,这不是我的要求。

任何人都知道我该怎么做?

3 个答案:

答案 0 :(得分:3)

showpage不是Ghostscript'选项',它是一个PostScript运算符。

因为您的输入文件是PDF,所以这是一项非常重要的任务。 PDF解释器将为输入PDF文件中的每个页面执行showpage的系统定义,覆盖您放入PostScript的任何内容。

不试试这个我相信你需要做的是创建一个EndPage过程,根据页面数量采取不同的操作(这是一种PostScript编程技术)。

例如:

/DoPage1 {
    %% Your code goes in here
} def
/DoPage2 {
    %% Your code goes in here
}
<<
/EndPage {
    2 lt{
        1 eq {
            DoPage1
        }{
            DoPage2
        } ifelse
    }{
        pop
    } ifelse
}
>> setpagedevice

您必须先运行此代码 2个PDF文件,例如:

gs .... setup.ps file1.pdf file2.pdf

答案 1 :(得分:2)

您可以在单个命令中提供所有ps文件名,紧邻每个pdf输出文件名。这将生成具有PS代码输出的require PDF,然后您可以根据需要使用任何PDF库合并它们。

答案 2 :(得分:0)

您可以将PS代码分解为多次迭代。只需使用PS代码的一部分创建一个pdf,然后生成另一个包含PS剩余部分的pdf。完成后,您可以在ghost脚本的帮助下合并两个PDF并获得所需的输出。

我知道这不是一个明智的解决方案,但是你可以继续前进。

由于