我正在通过一个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设备初始化和页面设置";详细信息。