problemas pro pencil pages mac dibujar como apple ios cocoa-touch pdf annotations xamarin.ios

ios - pro - como dibujar en pages mac



¿Cómo dibujar en PDF en iOS? (2)

Estoy tratando de encontrar una manera de permitir al usuario anotar (es decir, el dibujo de forma libre) un archivo PDF existente en iOS, pero el único enfoque que he encontrado parece extraordinariamente engorroso.

La solución está en Monotouch, pero puedo traducirla desde Objective-C si es necesario. Esto también significará que muchos de los nombres de métodos y propiedades pueden no ser completamente familiares para los desarrolladores que no son de Monotouch, pero solo estoy buscando un enfoque.

Actualmente tengo un código que permite a los usuarios anotar imágenes (jpg, png) usando los eventos TouchesMoved y TouchesBegan en una UIView. Esto funciona bien y logra lo que necesito.

Sin embargo, al trabajar con un archivo PDF existente, parece que la mayoría de la funcionalidad CGPDF se centra en crear nuevos archivos en lugar de editar los existentes.

El único enfoque que he podido proponer es el siguiente:

  1. Cuando se abre UIView, cree un archivo temporal y establezca el contexto PDF en ese archivo (UIGraphics.BeginPDFContext (filename)).

  2. Cree un nuevo CGPDFDocument del archivo original y luego dibuje cada página del PDF original en el contexto actual, que será el nuevo archivo temporal.

  3. Destruya el documento PDF original creado en el paso 2.

  4. Muestre al usuario la primera página y luego deje que dibujen sobre ella, con los comandos de dibujo enviados al contexto del nuevo archivo. También habrá métodos para permitir al usuario cambiar páginas.

  5. Cuando el usuario finalice, cierre el contexto PDF, que guardará todas las anotaciones en el nuevo archivo PDF.

Parece que tiene el potencial de ser un enorme problema de memoria y rendimiento, por lo que me pregunto si hay alguna otra forma de abordar esto.


La forma en que finalmente logramos esto fue dibujar el PDF en una vista normal, luego inserte una subvista sobre esta vista donde las anotaciones se dibujan realmente. Tenemos que registrar las anotaciones a medida que ocurren y ajustar el zoom. Cuando el usuario finaliza, dibujamos cada página del PDF en un nuevo archivo PDF y reproducimos las anotaciones en esa página, lo que efectivamente agrega anotaciones a un PDF existente.


Si utiliza las API de gráficos básicos, no es un gran problema para la memoria. El tamaño del pdf que contiene una vista es de 6kb (en mis pruebas con 320x480px).