Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Resize Postscript:同时重新缩放页面大小_Resize_Scale_Postscript - Fatal编程技术网

Resize Postscript:同时重新缩放页面大小

Resize Postscript:同时重新缩放页面大小,resize,scale,postscript,Resize,Scale,Postscript,对于我的一个绘图项目,我按照重新缩放我的后期脚本页面,使一个单位匹配1厘米的长度。我的PS文件的标题如下所示: %!PS matrix currentmatrix /originmat exch def /umatrix {originmat matrix concatmatrix setmatrix} def [28.3465 0 0 28.3465 0 0] umatrix 它做的工作,但我需要的另一件事是调整页面大小从美国信到A4。根据,例如,我应该setpagedevice使用类似于:

对于我的一个绘图项目,我按照重新缩放我的后期脚本页面,使一个单位匹配1厘米的长度。我的PS文件的标题如下所示:

%!PS
matrix currentmatrix /originmat exch def
/umatrix {originmat matrix concatmatrix setmatrix} def
[28.3465 0 0 28.3465 0 0] umatrix
它做的工作,但我需要的另一件事是调整页面大小从美国信到A4。根据,例如,我应该
setpagedevice
使用类似于:

<< /PageSize [595 842] >> setpagedevice

文件中是否有另一个设置字母格式的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

如何打印PostScript文件?您可能会在后端遇到重新缩放。顺便说一句,第一个代码片段可以简化为
[28.3465 0 28.3465 0 0]concat
。我没有PS打印机可供使用,因此我通常通过PCL驱动程序从
evice
打印它,或者我使用
ps2pdf
转换为PDF,然后以同样的方式打印。我的所有打印机都允许我覆盖纸张大小并在A4介质上打印字母,只要实际图形没有用完纸张。至于命令
[28.3465 0 28.3465 0 0]concat
,是的,它只是为我移动纸张上的图形。我应该把它清理干净,因为不管怎样,我的代码之后还有一个变化的步骤。感谢您指出。当转换为PDF时,此代码段可能会有所帮助:
[{Catalog}>>/PUT pdfmark
。不确定如何影响PCL路径。我发现,即使在超出书信页边界绘制时,我的原始绘图也不会丢失。例如,当我使用GhostScript将原始PS转换为PDF时,我可以使用
-sDEVICE=pdfwrite-sPAPERSIZE=A4
指定A4大小,绘图会重新出现在现在更大的边框中ins。这给了我一个可行的解决方法,类似于你所建议的。当然,原始PS仍然是字母大小。谢谢。我尝试过,但要么我不知道如何正确使用此例程,要么它没有帮助。无论如何,它启发了我在我的问题中添加一个最小的工作示例。确实没有出现其他的
setpagedevice
或我的代码中的任何其他介质更改命令。您能否说明您的方法是如何应用于MWE的?
userdict /setpagedevice {
    dup length dict begin
        {
            1 index /PageSize eq {
                pop [595 842]
            } if
            def
        } forall
    currentdict
    end
    setpagedevice
} bind put