You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将非封装PostScript页面嵌入其他文档?兼询psnup工作机制

PSNUP工作原理与PostScript页面嵌入实现疑问

我想搞懂psnup的工作逻辑。现在我有一份符合规范的PostScript文档,能扫描提取它的prolog、trailer和单页内容。我需要把指定页面嵌入到另一份文档的输出里,还要支持缩放和平移。之前试过遵循Encapsulated PostScript(EPS)规范,但它要求源文档满足特定规则,不太适用。

我做了如下尝试:
先在prolog里定义了以下函数:

/BeginEPSF {
  /b4_inc_state save def            % 保存当前状态用于后续恢复
  /dict_count countdictstack def    % 统计字典栈上的对象数量
  /op_count count 1 sub def         % 统计操作数栈上的对象数量
  userdict begin                    % 将userdict压入字典栈
  /showpage { } def                 % 重定义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   % 清理操作数栈
  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

(复制源文档中的单页内容,仅移除开头的%%Page注释)

grestore
EndEPSF
showpage

但嵌入的页面没按预期渲染,看起来嵌入页面里的某些内容覆盖了我定义的BeginEPSF函数。我对比后确认,我的代码和psnup都没修改页面内容(只删了%%Page注释),问题出在包装代码上。

我不想花几天时间啃psnup的源码,想知道有没有类似EPS规范的文档,能指导这种PostScript页面嵌入操作的实现方法。

内容的提问来源于stack exchange,提问作者Edward Falk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 04:35:17