line - 用Ghostscript绘制矩形(使用PostScript语言)

标签 line ghostscript rectangles postscript box

我正在尝试绘制一个矩形并使用 Ghostscript 将其输出到 PDF。 如果我将以下 PostScript 代码放入名为 rect.eps 的文件中,我就会得到我想要的结果:

newpath
100 100 moveto
0 100 rlineto
100 0 rlineto
0 -100 rlineto
-100 0 rlineto
closepath
gsave
0 0 0 setrgbcolor
fill
stroke
showpage

但是如果我尝试将该 PostScript 包含到我的 Ghostscript 命令中,我只会得到一个空白页:

gs -o rect.pdf -sDEVICE=pdfwrite -g300x300 -c "newpath 100 100 moveto 0 100 rlineto 100 0 rlineto 0 -100 rlineto -100 0 rlineto closepath gsave 0 0 0 setrgbcolor fill stroke showpage"

我做错了什么,难道不能用 Ghostscript 绘制一个矩形吗?

致以诚挚的问候 尼古拉斯

最佳答案

Stefan 的评论实际上是正确的。

您已将媒体尺寸设置为 300x300(以像素为单位)。现在假设 pdfwrite 设备的默认分辨率为 720 dpi,并且您没有更改它,这意味着介质尺寸在每个方向上都小于半英寸。

然后,您绘制了一个矩形,盯着页面上的 100,100 个单位,并在每个方向上延伸 100 个单位。 PostScritp 单位为 1/72 英寸,因此矩形的左下角从向上和向右略高于 1 英寸的位置开始。

它位于媒体定义的半英寸见方之外,因此结果只是将矩形从页面上绘制出来。

如果您不设置介质尺寸,Ghostscript 将使用其默认值(A4 或 Letter,具体取决于),您将看到输出。至于为什么当你制作 EPS 文件时它会起作用,我不知道,我希望 EPS 中有你没有共享的内容,这会产生影响。

创建与分辨率无关的 PDF 文件时,最好以与分辨率无关的单位(例如 PostScript 单位)指定介质大小,而不是像素。

请注意,您的代码还有一个额外的问题,Stefan 也提到过,即悬挂的 gsave,它看起来应该在中风之前有一个 grestore。由于中风不会做任何事情,我怀疑你想要:

gsave
0 0 0 setrgbcolor
fill
grestore
stroke
showpage

关于line - 用Ghostscript绘制矩形(使用PostScript语言),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44934001/

相关文章:

java - Swing 库中的绘制矩形/填充矩形问题(包括图像)

java - TextView 中的文本数量有限

python - Shebang 行 #!/usr/bin/python3 阻止服务器运行

linux - Ghostscript - pread - einval(无效参数)问题

linux - 如何以编程方式(或通过 CLI)旋转 PDF?

python - 从线中找到矩形的高效算法?

java - 是否可以将数组中的索引与颜色进行比较?

svg - 是否有将SVG线路径从绝对转换为相对的工具?

Python 从长度变化的数组中刷新 Pyplot 线

pdf - Ghostscript 呈现丑陋的文字