【发布时间】:2015-09-07 20:53:00
【问题描述】:
我想在 Mac OS x 应用程序的 Objective-C 中创建一个无限的 PDF 上下文,然后在我知道制作的大小后在保存之前对其进行裁剪。用 CGPDFContextCreateWithURL 很容易创建一个无限大的 PDFContext,但是用 Preview 之后就无法显示了。
【问题讨论】:
标签: objective-c cocoa pdf crop
我想在 Mac OS x 应用程序的 Objective-C 中创建一个无限的 PDF 上下文,然后在我知道制作的大小后在保存之前对其进行裁剪。用 CGPDFContextCreateWithURL 很容易创建一个无限大的 PDFContext,但是用 Preview 之后就无法显示了。
【问题讨论】:
标签: objective-c cocoa pdf crop
在类似的情况下,我用另一种方法解决了类似的问题。
在第一步中,我计算了一些(自定义)元文件,其中我刚刚注意到图形将具有哪些图形元素及其属性和坐标(无限的世界坐标,与任何输出设备或格式无关)。 通过这样做,我掌握了曾经使用过的最大 x 和 y 坐标。
我没有在 iOS 上这样做,但如果我愿意,那么我肯定会使用一些核心数据或只是一个普通的 sqlite 表。
下一步是将元坐标分解为合理的拼贴,在您的情况下,每个拼贴都与类似 pdf 页面的内容相关。这些图块将考虑目标纸张格式、横向或纵向等的 x/y 比率。您可能希望用户选择并提供预览页面。
然后我最终会逐页呈现 pdf。当您忽略所有完全超出当前页面范围的图形对象时,渲染应该非常快。通过每个对象左上角坐标的 x 和 y 对元项目进行一些智能排序,可以进一步提高性能。
我想如果你做得对,你会惊讶于它的运行速度有多快。
【讨论】: