Как нарисовать в PDF на iOS? - PullRequest
5 голосов
/ 30 марта 2012

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

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

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

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

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

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

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

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

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

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

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

Ответы [ 2 ]

6 голосов
/ 13 апреля 2012

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

0 голосов
/ 30 марта 2012

Если вы используете Core Graphics APIs, это не является серьезной проблемой с памятью.Размер PDF-файла, содержащего само представление, составляет 6 КБ (в моих тестах с разрешением 320x480 пикселей).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...