tabla standard para net library generar exportar crear con asp c# pdf c#-4.0 itextsharp

c# - para - itextsharp net standard



¿Es posible obtener elementos estructurales de un archivo PDF utilizando iTextSharp? (1)

Estamos utilizando iTextSharp con una aplicación C # WinForms para analizar un archivo PDF. Usando iTextSharp, puedo extraer fácilmente los datos de texto del archivo PDF. Supongamos que un archivo PDF contiene una imagen rodeada por dos líneas de texto. En este caso, no pude extraer la información sobre la imagen.

Mi requerimiento es:

  1. Obtener elementos estructurales del archivo PDF
  2. Procesar si cada uno es de tipo texto, imagen, tabla u otro

Por ejemplo, los elementos estructurales son similares a los siguientes:

text :paragraph1 text :paragraph2 Image:Image text :paragraph3 Table:table info text :Paragraph4

Si puedo obtener información en un formato como este, puedo entender fácilmente la información de texto, imagen, tabla, encabezado o pie de página.

Entonces, ¿es posible obtener este tipo de información usando iTextSharp? Si es así, por favor ilumíname sobre esto. De lo contrario, ¿podría sugerir algunas otras herramientas capaces de cumplir este requisito?

Gracias a todos,

Saravanan


Solía ​​tener este tipo de necesidad hace un tiempo. Utilicé esta función (de Extraer imágenes usando iTextSharp ):

private static PdfObject FindImageInPDFDictionary(PdfDictionary pg) { PdfDictionary res = (PdfDictionary)PdfReader.GetPdfObject(pg.Get(PdfName.RESOURCES)); PdfDictionary xobj = (PdfDictionary)PdfReader.GetPdfObject(res.Get(PdfName.XOBJECT)); if (xobj != null) { foreach (PdfName name in xobj.Keys) { PdfObject obj = xobj.Get(name); if (obj.IsIndirect()) { PdfDictionary tg = (PdfDictionary)PdfReader.GetPdfObject(obj); PdfName type = (PdfName)PdfReader.GetPdfObject(tg.Get(PdfName.SUBTYPE)); //image at the root of the pdf if (PdfName.IMAGE.Equals(type)) { return obj; }// image inside a form else if (PdfName.FORM.Equals(type)) { return FindImageInPDFDictionary(tg); } //image inside a group else if (PdfName.GROUP.Equals(type)) { return FindImageInPDFDictionary(tg); } } } } return null; }

Como puede ver en la foreach (PdfName name in xobj.Keys) , creo que puede analizar fácilmente todo un PDF y tratar todo tipo de datos a partir de él. Pero no estoy seguro de la parte de "verticalidad" de su necesidad.

Espero que pueda ayudarte.