从某种意义上说,我是在问
psnup
是如何工作的。
假设我有一个遵循文档结构约定的现有文档。我可以扫描它,拉出序言、预告片和单独的页面。然后,我想将选定的页面嵌入到另一个文档的输出中,并进行缩放和翻译。我尝试遵循封装后脚本的约定,但这些约定假设源材料遵循正确的规则。
我尝试过这样做:
在序言中定义这些:
/BeginEPSF {
/b4_inc_state save def % save state for cleanup
/dict_count countdictstack def % count objects on dict stack
/op_count count 1 sub def % count objects on operand stack
userdict begin % push userdict on dict stack
/showpage { } def % redefined showpage
0 setgray 0 setlinecap
1 setlinewidth 0 setlinejoin
10 setmiterlimit [] 0 setdash newpath
/languagelevel where
{pop languagelevel
1 ne
{false setstrokeadjust false setoverprint
} if
} if
} bind def
/EndEPSF {
count op_count sub {pop} repeat % clean up stacks
countdictstack dict_count sub {end} repeat
b4_inc_state restore
} bind def
然后在我的输出页面之一中我做了这样的事情:
%%Page: "1" 1
BeginEPSF
gsave
0.00000 49.76471 translate
0.64706 0.64706 scale
(copy one page from source document, discarding its leading %%Page)
grestore
EndEPSF
showpage
然而嵌入的页面在输出文档中呈现不变。嵌入页面中的某些内容覆盖了我的
BeginEPSF
功能。
我已经比较并确认我的代码和 psnup 都复制了页面内容不变(除了删除 %%Page 注释),所以它是包装代码中的东西。
我没有花几天时间尝试理解 psnup 代码,而是想知道是否有一个类似于 EPS 规范的文档,说明应该如何完成此操作。
不是最终答案,但我通过从 psnup 复制 prolog 代码并根据需要进行修改来解决它。
暂时保留这个问题,因为我希望找到一个官方的“规范”答案,而不是复制粘贴我不太理解的代码。