如何在iOS上绘制PDF?

时间:2012-03-30 02:52:56

标签: ios cocoa-touch pdf annotations xamarin.ios

我试图找到一种方法允许用户在iOS中注释(即自由格式绘制)现有的PDF文件,但我发现的唯一方法看起来非常麻烦。

解决方案在Monotouch中,但如果需要,我可以从Objective-C翻译。这也意味着非Monotouch开发人员可能并不完全熟悉许多方法和属性名称,但我只是在寻找一种方法。

我目前有代码允许用户使用UIView上的TouchesMoved和TouchesBegan事件来注释图像(jpg,png)。这很有效,可以完成我的需要。

但是,在使用现有PDF文件时,似乎大多数CGPDF功能都围绕创建新文件而不是编辑现有文件。

我能够提出的唯一方法如下:

  1. 打开UIView时,创建一个临时文件并将PDF上下文设置为该文件(UIGraphics.BeginPDFContext(filename))。

  2. 从原始文件创建一个新的CGPDFDocument,然后将原始PDF中的每个页面绘制到当前上下文中,该上下文将是新的临时文件。

  3. 销毁在步骤2中创建的原始PDF文档。

  4. 向用户显示第一页,然后让它们在上面绘图,并将绘图命令发送到新文件的上下文。还有一些方法可以让用户更改页面。

  5. 用户完成后,关闭PDF上下文,这会将所有注释保存到新的PDF文件中。

  6. 这似乎有可能成为一个巨大的记忆和性能生长,所以我想知道是否还有其他方法来解决这个问题?

2 个答案:

答案 0 :(得分:6)

我们最终完成此操作的方法是将PDF绘制到常规视图中,然后在此视图上方插入一个子视图,其中实际绘制了注释。我们必须记录注释,并调整缩放。用户完成后,我们将PDF的每个页面绘制成一个新的PDF文件,并将注释回放到该页面中,从而有效地为现有PDF添加注释。

答案 1 :(得分:0)

如果您确实使用了Core Graphics API,那么它不是主要的内存耗尽。持有视图的pdf大小为6kb(在我的测试中为320x480px)。