我发现ABCPDF非常有能力。但是,到目前为止,我还没有找到一种方法将一个 PDF 绘制到另一个圆角的 PDF 中——直到现在。但是,我发现的方法取决于为插入的 PDF 流获取正确的 PDF 对象 ID,这就是这个问题的原因。
任何了解 ABCPDF 的人都会问为什么这是一个问题?将一个 PDF 嵌入另一个 PDF 的 addImageDoc() 函数不返回 PDF 对象 ID 吗?不 - 它返回其他内容 - 插入的 PDF 很可能作为独立对象进入文档目录,而您在返回的 ID 中获得的是引用它的对象。解包文档流似乎证明了这一点。
长话短说,在我的实验中,我发现我需要在流中插入一个“Do”调用,其目标是:
imgObjId = addImageDoc(some pdf object) // inserted off-page
insert into stream "/Iabc<imgObjId + 1> Do"
例如,如果返回的 imgObjId 值为 5,那么我需要将其设为 6
/Iabc6 Do
问题:虽然这可以正常工作,但我依赖于将返回值加一,我想知道这将是多么强大。还是有正确的方法来实现这一目标?
更多信息:我的问题很简短,但读者可能想知道为什么上述问题很重要?因为要实现圆角,您需要构建一个定义了剪切区域的 PDF 命令流。考虑一个矩形的路径,角为贝塞尔曲线。有了这个,你需要在相同的上下文中绘制一个图像,或者在我的情况下是另一个 PDF,以获得剪辑效果。之后,您可以关闭并重置图形状态并成为一个好的 PDF 堆栈公民。但是,除了我上面的方法之外,我无法在 ABCPDF 中找到对目录中插入的 PDF 文档流的句柄,以便能够要求将其绘制在其他地方。
插入图像似乎是一个类似的过程,除了 getinfo() 函数可以发现像素图。嵌入式 PDF 似乎没有类似的方法。