我有一个Postscript文件,打算在11x17纸上打印。但在Mac OSX下,预览程序坚持将其裁剪为字母大小。如果我实际将它打印到11x17纸张上,它会被裁剪为字母大小,然后以11x17纸张为中心。
(请注意,预览程序始终转换为pdf作为中间步骤。)
显然,生成的pdf文件是一个字母大小的pdf文件。我猜我的Postscript文件缺少某种语法糖来提示pdf转换器的纸张尺寸,但我很茫然。我已经尝试在文档中插入%%DocumentMedia
和%%BeginPaperSize
条评论,我所采取的是正确的位置,但没有效果。
我还尝试将文档移动到Linux系统,运行ps2pdf,然后将生成的pdf文件移回Mac。没有效果。 ps2pdf以前从来没有弄错我,所以这就是让我觉得问题出在我的Postscript而不是Apple的pdf转换器中的原因。
%!PS-Adobe-3.0
%%BoundingBox: 0 0 792 1224
%%Creator: template plugin by Edward Falk
%%DocumentMedia: Tabloid 792 1224 0 () ()
%%Pages: 1
%%PageOrder: Ascend
%%DocumentData: Clean7Bit
%%EndComments
%%BeginDefaults
%%PageMedia: Tabloid
%%EndDefaults
%%BeginProlog
/drawmarker { % x y --
gsave
translate
newpath
0 -0.5 moveto 0 0.5 lineto
-0.5 0 moveto 0.5 0 lineto
0 0 .25 0 360 arc
stroke
grestore
} bind def
/drawmodel {
newpath
86.250 35.750 moveto
80.536 45.500 lineto
86.250 35.750 moveto
103.000 35.750 lineto
80.536 45.500 moveto
103.000 45.500 lineto
103.000 35.750 lineto
stroke
} bind def
%%EndProlog
%%Page: "1" 1
gsave
72 72 scale
-79.54 -34.75 translate
1 72 div setlinewidth
drawmodel
80.54 35.75 drawmarker
89.54 35.75 drawmarker
80.54 50.75 drawmarker
89.54 50.75 drawmarker
grestore
showpage
%%EndPage: "1" 1
%%EOF
答案 0 :(得分:2)
您的PostScript不会请求页面大小。行开头'%'是PostScript中的评论,并没有任何效果(一些PostScript消费者会解析DSC评论,这会混淆问题...)
如果您想要11x17媒体,则需要提出要求:
<</PageSize [792 1224]>> setpagedevice
如果没有它,你会获得默认媒体,无论是什么。在PostScript中允许使用空行并且没有效果,因为存在空白行的行为不同的DSC解析器是一个破碎的解析器,但据我所知,它非常古老。
答案 1 :(得分:1)
好吧,我通过对其他一些文件进行逆向工程来解决这个问题(pdftops是你的朋友)。在此处记录我的解决方案,以供将来可能会遇到相同问题的其他人使用。
缺少的元素与DSC无关,它实际上是setdevicepage
运算符。添加此代码修复了我的问题:
%%BeginSetup
2 dict begin
/PageSize 792 1224 2 array astore def
/ImagingBBox null def
currentdict end setpagedevice
%%EndSetup
如果当然,做正确的事情需要测试是否存在setpagedevice功能,因为它是在语言级别2中添加的。
更新:使用语言2级功能简化:
%%BeginSetup
% set up for pdf
<< /PageSize [792 1224] /ImagingBBox null >> setpagedevice
%%EndSetup