我试图找到一种方法允许用户在iOS中注释(即自由格式绘制)现有的PDF文件,但我发现的唯一方法看起来非常麻烦。
解决方案在Monotouch中,但如果需要,我可以从Objective-C翻译。这也意味着非Monotouch开发人员可能并不完全熟悉许多方法和属性名称,但我只是在寻找一种方法。
我目前有代码允许用户使用UIView上的TouchesMoved和TouchesBegan事件来注释图像(jpg,png)。这很有效,可以完成我的需要。
但是,在使用现有PDF文件时,似乎大多数CGPDF功能都围绕创建新文件而不是编辑现有文件。
我能够提出的唯一方法如下:
打开UIView时,创建一个临时文件并将PDF上下文设置为该文件(UIGraphics.BeginPDFContext(filename))。
从原始文件创建一个新的CGPDFDocument,然后将原始PDF中的每个页面绘制到当前上下文中,该上下文将是新的临时文件。
销毁在步骤2中创建的原始PDF文档。
向用户显示第一页,然后让它们在上面绘图,并将绘图命令发送到新文件的上下文。还有一些方法可以让用户更改页面。
用户完成后,关闭PDF上下文,这会将所有注释保存到新的PDF文件中。
这似乎有可能成为一个巨大的记忆和性能生长,所以我想知道是否还有其他方法来解决这个问题?
答案 0 :(得分:6)
我们最终完成此操作的方法是将PDF绘制到常规视图中,然后在此视图上方插入一个子视图,其中实际绘制了注释。我们必须记录注释,并调整缩放。用户完成后,我们将PDF的每个页面绘制成一个新的PDF文件,并将注释回放到该页面中,从而有效地为现有PDF添加注释。
答案 1 :(得分:0)
如果您确实使用了Core Graphics API,那么它不是主要的内存耗尽。持有视图的pdf大小为6kb(在我的测试中为320x480px)。