2011-03-29 44 views
6

Estoy tratando de obtener el contenido de una anotación PDF en la cadena para que pueda almacenar esa información en una base de datos con fines de búsqueda.Lectura de anotaciones en PDF con iText

¿Alguien sabe cómo lograr esto usando iText/iTextSharp?

+0

¿De qué tipo de anotaciones está tratando de obtener el texto? –

Respuesta

2

Sí, pero los detalles realmente dependen del tipo de anotaciones de las que está hablando.

En general:

PdfDictionary pageDict = myPdfReader.getPageN(firstPageIsOne); 

PdfArray annotArray = pageDict.getAsArray(PdfName.ANNOTS); 

for (int i = 0; i < annotArray.size(); ++i) { 
    PdfDictionary curAnnot = annotArray.getAsDict(i); 

    int someType = myCodeToGetAnAnnotsType(curAnnot); 
    if (someType == THIS_TYPE) { 
    writeThisType(curAnnot); 
    } else if (someType == THAT_TYPE) { 
    writeThatType(curAnnot); 
    } 
} 

Para más detalles, tendrá que examinar la PDF Specification, en particular, las descripciones de anotación: "Capítulo 12.5.6 Tipos de anotación".

Si nos puede decir qué tipos le interesan, puedo ayudarlo.

+0

Mark Quiero obtener una lista de/Anotaciones de texto agregadas como notas adhesivas Tengo un/Annot Dictionary devuelto pero no estoy seguro de cómo a: ver si es una anotación de texto y B: cómo extraerlo –

+0

@Mark Storer, ¿Puedo saber qué función es el proceso en myCodeToGetAnAnnotsType? –

1

Para futura referencia a cualquier persona que encuentra esta pregunta a través de Google como lo hice ...

Si lo que quieres hacer es encontrar pegajosa nombre de anotaciones de notas y contenidos que pueda hacer esto (basado en parte en la respuesta de Marcos)

PdfReader reader = new PdfReader(somePDF); 
PdfDictionary pageDict = reader.GetPageN(1); 

PdfArray annotArray = pageDict.GetAsArray(PdfName.ANNOTS); 

for (int i = 0; i < annotArray.Size; ++i) 
{ 
    PdfDictionary curAnnot = annotArray.GetAsDict(i); 

    PdfString name = curAnnot.GetAsString(PdfName.T); 
    PdfString contents = curAnnot.GetAsString(PdfName.CONTENTS); 
    if (!string.IsNullOrWhiteSpace(name?.ToString())) 
    { Console.WriteLine(name); } 
    if (!string.IsNullOrWhiteSpace(contents?.ToString())) 
    { Console.WriteLine(contents); } 
} 

Además, para ayudar a identificar qué cosas podría estar buscando se puede abrir un archivo PDF en un editor de texto y busque/Annot y que da gusto encontrar su objeto de anotación.

Cuestiones relacionadas