Estoy usando iTextSharp y el lector.GetPageContent método para tirar el texto de un PDF. Necesito encontrar el rectángulo de posición para cada palabra que se encuentra en el documento. Hay alguna forma de obtener el rectángulo y la posición de una palabra en un archivo PDF con iTextSharp?

Encontraste una buena solución a tu problema?

OriginalEl autor Dave | 2010-03-03

1 Comentario

  1. 20

    Sí que la hay. Retirar el text.pdf.parser paquete, específicamente LocationTextExtractionStrategy. En realidad, no podría hacer el truco. Usted probablemente desea escribir su propia TextExtractionStrategy para alimentar a PdfTextExtractor:

    MyTexExStrat strat = new MyTexExStrat();
    PdfTextExtractor.getTextFromPage(reader, pageNum, strat);
    //get the strings-n-rects from strat.
    
    public class MyTexExStrat implements TextExtractionStrategy {
        void beginTextBlock() {}
        void endTextBlock() {}
        void renderImage(ImageRenderInfo info) {}
        void renderText(TextRenderInfo info) {
          //track text and location here.
        }
    }

    Usted probablemente querrá buscar en el código fuente de LocationTextExtractionStrategy para ver cómo se combina el texto que comparte una línea de base. Incluso puede modificar LTES para almacenar matrices paralelas de cadenas y rects.

    PS: la construcción de la rects, usted puede conseguir el AscentLine & DescentLine y uso de esas coordenadas de las esquinas superior e inferior:

    Vector bottomLeft = info.getDescentLine().getStartPoint();
    Vector topRight = info.getAscentLine().getEndPoint();
    Rectangle rect = new Rectangle(bottomLeft.get(Vector.I1),
                                   bottomLeft.get(Vector.I2),
                                   topRight.get(Vector.I1),
                                   topRight.get(Vector.I2));

    Advertencia: el código anterior por El culo-u-mes de que el texto es horizontal y se efectúa de izquierda a derecha. El texto girado va a meter la pata, como el texto vertical o de derecha a izquierda (árabe, hebreo) de texto. Para la mayoría de aplicaciones, la de arriba debe estar bien, pero sé que es límites.

    Buena caza.

    Nota: El LocationTextExtractionStrategy analizador no necesariamente ubicar el texto en el orden de aparición en el documento. He colocado el texto en los pies de página (.los archivos docx), a continuación, convertirlos a PDF (con DOCX4J). He encontrado que el analizador se encuentra el texto, ¿cuál fue el .archivo docx a pie de página, a continuación, en la sección del cuerpo. es decir, localizar el texto en la parte inferior del documento, a continuación, el texto de arriba. Si usted necesita localizar en el orden de aparición, usted podría encontrar que usted necesita para ordenar sus resultados.
    Echa un vistazo a este enlace para la versión de C# stackoverflow.com/questions/23909893/…

    OriginalEl autor Mark Storer

Dejar respuesta

Please enter your comment!
Please enter your name here