我如何用tiffsep1设备用ghostscript/postscript在pdf中写一行带有梯度的行



我正在通过一个ps文件用ghostscript修改一个pdf,以添加一条横线,但它不适用于这个文件。

输入文件

  • B&W pdf
  • 渐变pdf

我试过

gs -sDEVICE=tiffsep1 -sCompression=lzw -r300x300 -o out%d.tif post.ps input.pdf

post.ps

%!
<<
/BeginPage {
newpath
0 0 moveto
1000 1000 lineto
stroke
} bind
/Orientation 3
>> setpagedevice
  • 我的B&W pdf确实有行,但渐变pdf
  • 这行好像在pdf下面
  • 两个输出的/Orientation都是正确的

如何使用渐变获得文件的预期输出

我在c#中调用gs的方式与这个问题中的相同。

PDF文件的内容不包含透明操作,因此它们是不透明的。在你的B&W文件页面上唯一的标记是黑色区域,在渐变文件的情况下,几乎整个页面都被渐变填充标记。

BeginPage PostScript过程在处理页面内容之前,在页面的开始处执行。

于是,画了一条黑线,然后从B&绘制W文件。如果黑线没有被页面内容的黑色区域覆盖,你可以看到这条线(如果你把线画成红色,你就会看到黑色区域覆盖了这条线(。

你的渐变文件覆盖了最初画黑线的整个区域,所以你看不到任何一条

如果要在页面内容的"顶部"绘制线条,则需要使用EndPage过程,而不是BeginPage过程。

此案例被报告为Ghostscript中的一个错误。https://bugs.ghostscript.com/show_bug.cgi?id=702597事实上,提供的/EndPage过程无效。/BeginPage和/EndPage过程不能互换。参见PostScript语言参考手册;6.2.6设备初始化和页面设置";详细信息。

最新更新