notes from files apple app iphone objective-c ios ipad pdf

iphone - from - itunes



Búsqueda en PDF en el iPhone (2)

Este no es un problema simple de implementar, pero es sencillo.

Para cualquier página dada, necesita escanear la página usando la API del escáner CGPDF. Necesita registrar devoluciones de llamadas para operadores de PDF que afectan el texto de la página, no solo TJ / Tj, sino también aquellos que configuran fuente, afectan la matriz de dibujo de texto, etc. Necesita construir una máquina de estado que se actualice con cada etiqueta encontrada + parámetros. Debe examinar la contabilidad de texto para la codificación de la fuente actual. Cuando encuentre el texto que desea resaltar, deberá examinar la matriz de dibujo de texto actual que ha estado actualizando para determinar las coordenadas del dibujo. Lea la especificación PDF (la versión 1.7 se puede descargar de Adobe) para comprender a qué operadores debe prestar atención.

La codificación de fuentes es quizás la parte más difícil, ya que hay un puñado de formas en que se puede especificar la codificación, y algunas de ellas son propiedad de la fuente. En general, puede hacer trampas y recurrir a un subconjunto de codificación ANSI, pero esto ROMPERÁ en ciertos archivos PDF que tienen fuentes extrañas.

Esencialmente está procesando la página como si fuera a renderizarla.

Después de dos días tratando de leer las anotaciones de un PDF usando Quartz, logré hacerlo y publiqué mi código .

Ahora me gustaría hacer lo mismo con otra pregunta frecuente: buscar documentos PDF con Quartz. La misma situación que antes, esta pregunta se ha hecho muchas veces con casi ninguna respuesta práctica. Así que primero necesito algunos consejos, ya que todavía no lo he implementado.

Lo que probé:

Intenté usar CGPDFScannerScan manejando los operadores TJ y Tj - devuelve el texto correcto en algunos PDF, mientras que en otros documentos devuelve la mayoría de las letras al azar. Tal vez está relacionado con la codificación de texto? Alguien señaló que los bloques de texto (marcados por operadores BT / ET) deberían manejarse en su lugar, pero todavía no lo he logrado. ¿Alguien logró extraer texto de cualquier PDF?

Después de eso, la búsqueda debería ser fácil al almacenar todo el texto en un NSMutableString y usar rangeOfString (si hay una mejor manera, por favor avíseme).

Pero, ¿cómo resaltar el resultado ? Sé que hay algunos operadores para encontrar los tamaños de los glifos, así que pude calcular el rect resultante en base a esos valores, pero he estado leyendo las especificaciones durante horas ... es un desastre hinchado y me estoy volviendo loco. ¿Alguien con una explicación práctica?

Actualizar

El usuario Naveen Thunga encontró PDFKitten , "un marco para extraer datos de archivos PDF en iOS". Acabo de probar la demostración y parece funcionar como se anuncia. Lo probaré con más archivos PDF y publicaré los resultados pronto. Como nota al margen, el código me parece muy bueno: si te interesa cómo funciona esto, es bastante increíble.


PDF.js clases de utilidad en PDF.js -C usando PDF.js

Que permitirá la visualización y la búsqueda de archivos PDF.

La clase de utilidad permite la búsqueda usando Highlight all search result las opciones de Highlight all search result y ''distingue entre mayúsculas y minúsculas''.

Ver búsqueda en PDF en acción Link