我如何使用 tiffsep1 设备在带有 ghostscript/postscript 渐变的 pdf 中写一行?
How can i write a line in a pdf with a gradient with ghostscript/postscript with tiffsep1 device?
我正在尝试通过 ps 文件修改带有 ghostscript 的 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 的黑色输出确实有线条,但是 Gradient pdf 的黑色输出没有.
- 行好像在pdf下!?
- 两个输出的
/Orientation
都是正确的。
如何使用渐变获得文件的预期输出?
.
我在 c# 中调用 gs 的方式与在 this question 中相同。
您的 PDF 文件的内容不包含透明度操作,因此它们是不透明的。对于黑白文件,页面上唯一的标记是黑色区域,对于渐变文件,几乎整个页面都被渐变填充标记。
在处理页面内容之前,在页面的开始执行BeginPage PostScript过程。
所以会发生这样的情况,先绘制一条黑线,然后绘制黑白文件中的黑色标记。在黑色线条未被页面内容的黑色区域覆盖的地方,您可以看到该线条(如果您以红色绘制线条,您会看到黑色区域覆盖该线条的位置)。
您的渐变文件覆盖了最初绘制黑线的整个区域,因此您看不到任何内容。
如果要绘制页面内容的线条 'on top',则需要使用 EndPage 过程,而不是 BeginPage。
此案例被报告为 Ghostscript 中的错误。
https://bugs.ghostscript.com/show_bug.cgi?id=702597
事实上,提供的 /EndPage 过程是无效的。
/BeginPage 和 /EndPage 过程不可互换。
有关详细信息,请参阅 PostScript 语言参考手册,“6.2.6 设备初始化和页面设置”。
我正在尝试通过 ps 文件修改带有 ghostscript 的 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 的黑色输出确实有线条,但是 Gradient pdf 的黑色输出没有.
- 行好像在pdf下!?
- 两个输出的
/Orientation
都是正确的。
如何使用渐变获得文件的预期输出?
.
我在 c# 中调用 gs 的方式与在 this question 中相同。
您的 PDF 文件的内容不包含透明度操作,因此它们是不透明的。对于黑白文件,页面上唯一的标记是黑色区域,对于渐变文件,几乎整个页面都被渐变填充标记。
在处理页面内容之前,在页面的开始执行BeginPage PostScript过程。
所以会发生这样的情况,先绘制一条黑线,然后绘制黑白文件中的黑色标记。在黑色线条未被页面内容的黑色区域覆盖的地方,您可以看到该线条(如果您以红色绘制线条,您会看到黑色区域覆盖该线条的位置)。
您的渐变文件覆盖了最初绘制黑线的整个区域,因此您看不到任何内容。
如果要绘制页面内容的线条 'on top',则需要使用 EndPage 过程,而不是 BeginPage。
此案例被报告为 Ghostscript 中的错误。 https://bugs.ghostscript.com/show_bug.cgi?id=702597 事实上,提供的 /EndPage 过程是无效的。 /BeginPage 和 /EndPage 过程不可互换。 有关详细信息,请参阅 PostScript 语言参考手册,“6.2.6 设备初始化和页面设置”。