【问题标题】:PostScript new page in a loop循环中的 PostScript 新页面
【发布时间】:2020-01-28 20:32:41
【问题描述】:

我遇到了 newpage 运算符的问题。我有以下代码

%!PS-Adobe-3.0

/txtArray [(a) (b) (c) (d)] def

/fontSize 12 def
/lineHeight fontSize def
/lineHeight lineHeight 1.5 mul def

/Arial findfont fontSize scalefont setfont

/x 50 def
/y 400 def

txtArray
{
    /y y lineHeight sub def
    x y moveto
    show
} forall

showpage
100 200 moveto
(Hello) show

%%EOF

打印数组后我想要一个新页面,但我只能看到数组元素。不显示字符串“Hello”。在下一步中,我想在循环中编写 newpage 运算符,以便在每个数组元素之后获取一个新页面。

我该如何解决这个问题?

【问题讨论】:

    标签: postscript


    【解决方案1】:

    标准 PostScript 中没有称为 newpage 的运算符,您的意思是 showpage 吗?

    您的程序完全按照您的要求执行。绘制完数组的内容后,您执行showpage,它将累积的操作传输到输出缓冲区并弹出页面。完成此操作后,您将继续进行更多绘图操作,但您不再调用showpage。然后程序终止。由于您在这些绘图操作之后没有调用 showpage,因此累积的操作不会转移到输出。

    当您想将累积的绘图传输到输出时,您需要调用showpage。 (注意这也会在传输数据后擦除页面)

    因此,如果您在(Hello) show 之后添加showpage ,那么您将获得带有Hello 的第二页。

    【讨论】:

    • 是的,当然,我的意思是展示页面。您的解决方案有效。但我想知道为什么 evince 文档查看器只显示一页。如果我使用 ghostscript 将 ps 转换为 pdf,则 PDF 包含所有页面。如果我使用以下代码%!PS-Adobe-3.0 %%Page: 1 1 %%BeginPageSetup /pgsave save def %%NeededResource: font TimesRoman %%EndPageSetup showpage %%Page: 2 2 %%BeginPageSetup /pgsave save def %%NeededResource: font TimesRoman %%EndPageSetup showpage %%EOF 可以看到evince中的所有页面
    • 好吧,当我在这里使用 Ghostscript 9.50 和 pdfwrite 设备尝试您的程序时,'gs -sDEVICE=pdfwrite -sOutputFile=out.pdf test.ps' 输出文件只有一页.. .. 上面评论中的例子有两次showpage的执行,所以是的,它会产生2个页面。我认为 Evince 正在使用 Ghostscript 来处理 PostScript 输入。
    猜你喜欢
    • 2017-03-31
    • 1970-01-01
    • 1970-01-01
    • 2020-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-10
    • 1970-01-01
    相关资源
    最近更新 更多