我理解PS到PDF转换的基本过程。 PS是一个绘制的程序,因此PS解释器运行程序并绘制对象,然后将这些对象呈现到PDF信封中。
这个过程如何反向运作?将PDF文件中的每个对象元素视为图像,然后创建一组绘制每个图像的PS指令的基本思路是什么?
我不会说PS-> PDF转换通过渲染PostScript绘图操作来起作用,这意味着一个位图。通常,标记操作是cpatured,然后使用PDF结构编写等效标记操作。
现在PDF是一种描述语言,而不是一种编程语言。这意味着当从PDF开始时,我们可以立即获得对象描述,而不是运行程序来生成它。因此,更容易完成每个描述并将其转换为PostScript程序。
事实上,许多此类转换实际上通过将PDF运算符定义为PostScript例程,然后直接转储PDF操作。例如:
/m /moveto load def
/l /lineto load def
/c /curveto load def
/v { currentpoint 6 2 roll curveto } bind def
/y { 2 copy curveto } bind def
/re {
4 2 roll moveto exch dup 0 rlineto 0 3 -1 roll rlineto neg 0 rlineto
closepath
} def
真正的问题是在处理无法用PostScript表示的PDF功能时,主要是透明度。因为在这种情况下无法创建PostScript矢量描述以匹配PDF描述(图形模型的差异),所以至少必须将透明区域渲染为位图图像,并将图像插入到PostScript程序中。