resize - 后记:同时重新缩放和调整页面大小
问题描述
对于我的一个绘图项目,我按照Eric Weeks 的 How-to重新调整我的后脚本页面,以便一个单位匹配 1 厘米的长度。我的 PS 文件的标题如下所示:
%!PS
matrix currentmatrix /originmat exch def
/umatrix {originmat matrix concatmatrix setmatrix} def
[28.3465 0 0 28.3465 0 0] umatrix
它可以完成这项工作,但我需要的另一件事是将页面大小从US Letter调整为 A4。例如,根据Postscript - 文件大小,我应该setpagedevice
使用以下内容:
<< /PageSize [595 842] >> setpagedevice
但是我不能让它工作。当我把它放在重新定义的前面时matrix
,它不起作用。当我在matrix
重新定义之后放置它(甚至将新尺寸转换为厘米)时,它会重置矩阵比例并且页面仍然显示为US Letter,只有绘图被按比例缩小,因为坐标现在以 pts 为单位。
如何重新缩放页面并定义其大小?
编辑:我附上一个 MWE 提出我的问题。这将绘制一个矩形,该矩形将在页面周围绘制一个框,如果页面是 A4 大小,则留出 10 毫米的边距。在一个字母大小的介质上,它显示了纸张如何更短但更宽。
%!PS
matrix currentmatrix /originmat exch def
/umatrix {originmat matrix concatmatrix setmatrix} def
[28.3465 0 0 28.3465 0 0] umatrix
0.020000 setlinewidth
1.0 1.0 moveto 1.0 27.7 lineto 20.0 27.7 lineto 20 1.0 lineto 1.0 1.0 lineto
stroke
解决方案
在设置字母格式的文件中是否还有另一个 setpagedevice 调用?最后执行的调用将赢得页面大小,并且在调用之后已经完成了不同的矩阵设置,因为它在设置页面设备时重置了所有图形设置。
如果找不到调用它的位置,可以在 userdict 中重新定义 setpagedevice 运算符。这可能有效或无效,取决于整个 PostScript 文件的构建方式。在重新定义中,您将为 setpagedevice 创建一个新的 dict 操作数,复制所有条目,但将任何 PageSize 替换为您想要的值。
这可能会:
userdict /setpagedevice {
dup length dict begin
{
1 index /PageSize eq {
pop [595 842]
} if
def
} forall
currentdict
end
setpagedevice
} bind put
推荐阅读
- android - 如何在没有网站的情况下设置包名称?
- android - 以编程方式将 Fragment 添加到 Kotlin 中的 Activity
- java - 无法在全新的 Manjaro 安装上启动 Eclipse (2019-12)
- hyperledger-fabric - Hyperledger 结构对等更新失败:签名集不满足策略
- javascript - 我的代码如何理解该函数和超时正在运行?
- string - Dart 中等效的 strstr 函数
- reactjs - 第一次渲染我的元素时,参考电流始终为空?
- git - 将弹性 beanstalk 配置复制到另一个区域的环境中
- javascript - 当我点击不同的图像时隐藏 div
- ruby-on-rails - 减少日志记录 Rails 5