微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 postscript 'clip' 命令打印文档中的多个字段的正确技术是什么?

如何解决使用 postscript 'clip' 命令打印文档中的多个字段的正确技术是什么?

我的第一个剪辑似乎工作正常,但第二个字符串根本没有打印。

newpath
20 20 moveto
0 24 rlineto
50 0 rlineto
0 -24 rlineto
closepath clip
20 20 moveto
(Hello World) show

newpath
80 20 moveto
0 24 rlineto
50 0 rlineto
0 -24 rlineto
closepath clip
80 20 moveto
(Hello Again) show

解决方法

第一个剪辑允许在封闭区域内绘画。第二个剪辑已经在允许的区域之外。请参阅 PostScript 语言参考手册:

PSLRM3 在 4.4.2 剪切路径: 图形状态还包含限制页面区域的剪切路径 受涂装经营者的影响。该路径的封闭子路径定义了 可以涂漆的区域。落在此区域内的标记将应用于页面; 那些落在外面的人不会。

Clip:没有办法放大当前的剪切路径(除了通过 initclip 或 initgraphics)或在不参考当前路径的情况下设置新的剪切路径。推荐使用clip的方法是用gsave和grestore将clip和要剪裁的图形序列括起来。 grestore 将恢复在 gsave 之前生效的剪切路径。 setgstate 运算符还可用于将剪切路径重置为较早的状态。

编辑: 这可能很有用:

%!

/Helvetica 12 selectfont
gsave
20 20 moveto
0 24 rlineto
50 0 rlineto
0 -24 rlineto
closepath
80 20 moveto
0 24 rlineto
50 0 rlineto
0 -24 rlineto
closepath
clip
clippath 0.8 setgray fill
0 setgray
20 20 moveto
(Hello World) show
80 20 moveto
(Hello Again and Again) show
grestore
showpage
,

我相信您对剪辑路径效果的看法有误。 如果设置了剪辑路径,它将影响和剪辑随后的所有绘画操作。 IE。所有绘画操作(填充、描边、显示等)都仅限于在执行它们时生效的当前剪辑路径内绘画。您可以通过调用 grestore 删除该绘制操作后的剪切路径,并为下一个绘制操作设置一个新的剪切路径。

/Helvetica 12 selectfont
gsave
    <construct the desired clip path with moveto,lineto,whatever>
    clip
    newpath
    20 20 moveto
    (Hello!) show % cannot paint outside the current clippath
grestore
% now no clippath is in effect
gsave
    <construct the desired clip path somewhere else>
    clip
    newpath
    80 20 moveto
    (Hello again!) show
grestore

请注意,与笔触或填充等不同,剪辑运算符不会删除当前路径,这就是为什么剪辑运算符后面几乎总是跟新路径运算符的原因。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。