How to рисовать в PDF на iOS?

Я пытаюсь найти способ, позволяющий пользователю аннотировать (то есть рисовать в произвольной форме) существующий файл PDF в iOS, но единственный подход, который я нашел, кажется чрезвычайно громоздким.

Решение находится в Monotouch, но при необходимости я могу перевести его из Objective-C. Это также будет означать, что многие имена методов и свойств могут быть не совсем знакомы разработчикам, не использующим Monotouch, но я просто ищу подход.

В настоящее время у меня есть код, который позволяет пользователям аннотировать изображения (jpg, png) с помощью событий TouchesMoved и TouchesBegan в UIView. Это хорошо работает и выполняет то, что мне нужно.

Однако при работе с существующим PDF-файлом кажется, что большая часть функций CGPDF сосредоточена на создании новых файлов, а не на редактировании существующих.

Единственный подход, который мне удалось придумать, заключается в следующем:

  1. При открытии UIView создайте временный файл и установите контекст PDF для этого файла (UIGraphics.BeginPDFContext(имя файла)).

  2. Создайте новый CGPDFDocument из исходного файла, а затем перенесите каждую страницу из исходного PDF-файла в текущий контекст, который будет новым временным файлом.

  3. Уничтожить исходный PDF-документ, созданный на шаге 2.

  4. Покажите пользователю первую страницу, а затем дайте ему возможность рисовать на ней, при этом команды рисования отправляются в контекст нового файла. Также будут методы, позволяющие пользователю менять страницы.

  5. Когда пользователь закончит, закройте контекст PDF, при этом все аннотации будут сохранены в новом файле PDF.

Кажется, что это может быть огромным борцом памяти и производительности, поэтому мне интересно, есть ли какой-либо другой способ приблизиться к этому?

5
задан competent_tech 30 March 2012 в 02:52
поделиться