ios - 如何在 iOS 上绘制成 PDF?

标签 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 文件中。

这似乎有可能成为巨大的内存和性能消耗,所以我想知道是否有任何其他方法可以解决这个问题?

最佳答案

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

关于ios - 如何在 iOS 上绘制成 PDF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9936386/

相关文章:

iPhone SDK - 大 UITableViewCell

java - iText 7 itextpdf.kernel.PdfException

Java:如何将PDF写出到文本文件?

ios - 无法获取用于转换的 collectionViewCell 项目的框架

ios - 在 Swift 中使用 SPUserResizableView

objective-c - 链接到 Cocoa/Xcode 中的常量文件

pdf - 从 pdf 文件导入/读取数据的最佳方法是什么?

iphone - iOS 上的重复推送通知

ios - 在 ios 中集成 Sandisk Connect 无线棒

iphone - UIActivityIndi​​cator 流程执行后开始循环