Leer pdfs

18/01/2007 - 09:53 por Juan Diego Bueno | Informe spam
Buenas grupo:

¿Conoceis alguna api, o solución (gratuita, of course) que permita
hacer una búsqueda sobre el texto de un pdf desde una aplicación
.net?. O de pago, mientras que la velocidad de búsqueda valga la pena
para hacer frente a su adquisición

Saludos

Preguntas similare

Leer las respuestas

#1 Francesc
18/01/2007 - 11:08 | Informe spam
Sí, tu propio codigo ;)

Primero debes agregar: (C#)

using System.Collections.Generic;
using System.Globalization;
using sharpPDF;
using sharpPDF.Enumerators;

y al igual que lees un fichero .txt o un .xml puedes leer y escribir un PDF.
Aqui te pongo un ejemplo de ESCRITURA para que veas como se deberia hacer, mi
fichero de datos es un xml pero puede ser un SQL tranquilamente... Ante dudas
me lo dices:

/**
Genera el fichero PDF
**/
public static void GenerarPDF()
{
try
{
int i = 0;
int j = 0;
List<Libro> libros = new List<Libro>();
libros = ListarLibrosXMLReader();
libros.Sort();

pdfDocument myDoc = new pdfDocument("Informe de libros", "Vicenç", false);
pdfPage myPage = myDoc.addPage();
myPage.addText("Informe de libros", 30, 700,
predefinedFont.csHelveticaOblique, 30, new pdfColor(predefinedColor.csCyan));

pdfTable myTable = new pdfTable();
myTable.borderSize = 1;
myTable.borderColor = new pdfColor(predefinedColor.csDarkBlue);

myTable.tableHeader.addColumn(new pdfTableColumn("Autor",
predefinedAlignment.csCenter, 120));
myTable.tableHeader.addColumn(new pdfTableColumn("Titulo",
predefinedAlignment.csCenter, 120));
myTable.tableHeader.addColumn(new pdfTableColumn("Precio(EUR)",
predefinedAlignment.csCenter, 100));
myTable.tableHeader.addColumn(new pdfTableColumn("Stock",
predefinedAlignment.csCenter, 80));
myTable.tableHeader.addColumn(new pdfTableColumn("Fecha",
predefinedAlignment.csCenter, 100));

while (j < libros.Count)
{
if (i < 20)
{
pdfTableRow myRow = myTable.createRow();
myRow[0].columnValue = libros[j].Autor;
myRow[1].columnValue = libros[j].Titulo;
myRow[2].columnValue = libros[j].Precio.ToString();
myRow[3].columnValue = libros[j].Stock.ToString();
myRow[4].columnValue = libros[j].Fecha.ToShortDateString();
myTable.addRow(myRow);
myRow = myTable.createRow();

i++;
j++;
}
else
{
if (i == 20)
{
myTable.tableHeaderStyle = new
pdfTableRowStyle(predefinedFont.csCourierBoldOblique, 10, new
pdfColor(predefinedColor.csBlack), new
pdfColor(predefinedColor.csLightCyan));
myTable.rowStyle = new pdfTableRowStyle(predefinedFont.csCourier, 8, new
pdfColor(predefinedColor.csBlack), new pdfColor(predefinedColor.csWhite));
myTable.alternateRowStyle = new pdfTableRowStyle(predefinedFont.csCourier,
8, new pdfColor(predefinedColor.csBlack), new
pdfColor(predefinedColor.csWhite));
myTable.cellpadding = 10;

myPage.addTable(myTable, 30, 650);
myPage = myDoc.addPage();

i = 0;

myTable = new pdfTable();
myTable.borderSize = 1;
myTable.borderColor = new pdfColor(predefinedColor.csDarkBlue);

myTable.tableHeader.addColumn(new pdfTableColumn("Autor",
predefinedAlignment.csCenter, 120));
myTable.tableHeader.addColumn(new pdfTableColumn("Titulo",
predefinedAlignment.csCenter, 120));
myTable.tableHeader.addColumn(new pdfTableColumn("Precio(EUR)",
predefinedAlignment.csCenter, 100));
myTable.tableHeader.addColumn(new pdfTableColumn("Stock",
predefinedAlignment.csCenter, 80));
myTable.tableHeader.addColumn(new pdfTableColumn("Fecha",
predefinedAlignment.csCenter, 100));
}
}
}
if (i != 0)
{
myTable.tableHeaderStyle = new
pdfTableRowStyle(predefinedFont.csCourierBoldOblique, 10, new
pdfColor(predefinedColor.csBlack), new
pdfColor(predefinedColor.csLightCyan));
myTable.rowStyle = new pdfTableRowStyle(predefinedFont.csCourier, 8, new
pdfColor(predefinedColor.csBlack), new pdfColor(predefinedColor.csWhite));
myTable.alternateRowStyle = new pdfTableRowStyle(predefinedFont.csCourier,
8, new pdfColor(predefinedColor.csBlack), new
pdfColor(predefinedColor.csWhite));
myTable.cellpadding = 10;

myPage.addTable(myTable, 30, 650);
}

myTable = null;

//Establecemos los numeros de pagina
pdfPageMarker marker = new pdfPageMarker(500, 30,
predefinedMarkerStyle.csArabic);
marker.fontSize = 12;
marker.fontType = predefinedFont.csTimes;
marker.pattern = "Pagina #n# de #N#";
myDoc.pageMarker = marker;

myDoc.createPDF("libros.pdf");

}
catch (Exception ex)
{
//Console.WriteLine("Se ha producido el siguiente error al generar el pdf: "
+ ex.Message);
throw new LibreriaException("Se ha producido el siguiente error al generar
el pdf: " + ex.Message);
}
}
}
}

Francesc Jaumot
España (Lérdia)


"Juan Diego Bueno" wrote:

Buenas grupo:

¿Conoceis alguna api, o solución (gratuita, of course) que permita
hacer una búsqueda sobre el texto de un pdf desde una aplicación
..net?. O de pago, mientras que la velocidad de búsqueda valga la pena
para hacer frente a su adquisición

Saludos


Respuesta Responder a este mensaje
#2 Juan Diego Bueno
19/01/2007 - 09:49 | Informe spam
No hombre, no me lo he tomado a mal. Es una expresión que queda mal
escrita, si la hubieras oido, no daría pie a malinterpretaciones.

Voy a probar eso que has propuesto, a ver que tal va

Gracias por todo

Saludos

Francesc ha escrito:

Chulo nu! yo solo te pasava el codigo para mirar...no para nada mas
ehh?...pero bueno. si t lo has tomado mal...

Retomando el tema y dejandonos de sencedes, lo que puedes hacer es lo mismo
que se hace con XMLDocumento, cargalo en un .LOAD y con un oledb (como se
hace en excel o word) carga todos sus datos y podras leer en el...el
connection string del pdf lo puedes encontrar en
http://www.connectionstrings.com/


Francesc Jaumot
España (Lérdia)


"Juan Diego Bueno" wrote:

> Coño, que chulo eres Francesc... Con mi propio código, si, pero
> usando SharpPDF (que ya conocía, por cierto). Esta dll ya pensaba
> usarla para generar pdfs... El tema no es leer los pdfs que yo mismo
> genere..., sino leer cualquier pdf que por supuesto, tenga texto con
> tipos de letra reconocibles por un ocr. No se si Google Desktop utiliza
> algo así para indexar, e igual con su api podría hacerlo, pero la
> idea inicial es esa: Leer cualquier tipo de pdf e interpretar su texto
> para poder buscar sobre él
>
>
> Francesc ha escrito:
>
> > Sí, tu propio codigo ;)
> >
> > Primero debes agregar: (C#)
> >
> > using System.Collections.Generic;
> > using System.Globalization;
> > using sharpPDF;
> > using sharpPDF.Enumerators;
> >
> > y al igual que lees un fichero .txt o un .xml puedes leer y escribir un PDF.
> > Aqui te pongo un ejemplo de ESCRITURA para que veas como se deberia hacer, mi
> > fichero de datos es un xml pero puede ser un SQL tranquilamente... Ante dudas
> > me lo dices:
> >
> > /**
> > Genera el fichero PDF
> > **/
> > public static void GenerarPDF()
> > {
> > try
> > {
> > int i = 0;
> > int j = 0;
> > List<Libro> libros = new List<Libro>();
> > libros = ListarLibrosXMLReader();
> > libros.Sort();
> >
> > pdfDocument myDoc = new pdfDocument("Informe de libros", "Vicenç", false);
> > pdfPage myPage = myDoc.addPage();
> > myPage.addText("Informe de libros", 30, 700,
> > predefinedFont.csHelveticaOblique, 30, new pdfColor(predefinedColor.csCyan));
> >
> > pdfTable myTable = new pdfTable();
> > myTable.borderSize = 1;
> > myTable.borderColor = new pdfColor(predefinedColor.csDarkBlue);
> >
> > myTable.tableHeader.addColumn(new pdfTableColumn("Autor",
> > predefinedAlignment.csCenter, 120));
> > myTable.tableHeader.addColumn(new pdfTableColumn("Titulo",
> > predefinedAlignment.csCenter, 120));
> > myTable.tableHeader.addColumn(new pdfTableColumn("Precio(EUR)",
> > predefinedAlignment.csCenter, 100));
> > myTable.tableHeader.addColumn(new pdfTableColumn("Stock",
> > predefinedAlignment.csCenter, 80));
> > myTable.tableHeader.addColumn(new pdfTableColumn("Fecha",
> > predefinedAlignment.csCenter, 100));
> >
> > while (j < libros.Count)
> > {
> > if (i < 20)
> > {
> > pdfTableRow myRow = myTable.createRow();
> > myRow[0].columnValue = libros[j].Autor;
> > myRow[1].columnValue = libros[j].Titulo;
> > myRow[2].columnValue = libros[j].Precio.ToString();
> > myRow[3].columnValue = libros[j].Stock.ToString();
> > myRow[4].columnValue = libros[j].Fecha.ToShortDateString();
> > myTable.addRow(myRow);
> > myRow = myTable.createRow();
> >
> > i++;
> > j++;
> > }
> > else
> > {
> > if (i == 20)
> > {
> > myTable.tableHeaderStyle = new
> > pdfTableRowStyle(predefinedFont.csCourierBoldOblique, 10, new
> > pdfColor(predefinedColor.csBlack), new
> > pdfColor(predefinedColor.csLightCyan));
> > myTable.rowStyle = new pdfTableRowStyle(predefinedFont.csCourier, 8, new
> > pdfColor(predefinedColor.csBlack), new pdfColor(predefinedColor.csWhite));
> > myTable.alternateRowStyle = new pdfTableRowStyle(predefinedFont.csCourier,
> > 8, new pdfColor(predefinedColor.csBlack), new
> > pdfColor(predefinedColor.csWhite));
> > myTable.cellpadding = 10;
> >
> > myPage.addTable(myTable, 30, 650);
> > myPage = myDoc.addPage();
> >
> > i = 0;
> >
> > myTable = new pdfTable();
> > myTable.borderSize = 1;
> > myTable.borderColor = new pdfColor(predefinedColor.csDarkBlue);
> >
> > myTable.tableHeader.addColumn(new pdfTableColumn("Autor",
> > predefinedAlignment.csCenter, 120));
> > myTable.tableHeader.addColumn(new pdfTableColumn("Titulo",
> > predefinedAlignment.csCenter, 120));
> > myTable.tableHeader.addColumn(new pdfTableColumn("Precio(EUR)",
> > predefinedAlignment.csCenter, 100));
> > myTable.tableHeader.addColumn(new pdfTableColumn("Stock",
> > predefinedAlignment.csCenter, 80));
> > myTable.tableHeader.addColumn(new pdfTableColumn("Fecha",
> > predefinedAlignment.csCenter, 100));
> > }
> > }
> > }
> > if (i != 0)
> > {
> > myTable.tableHeaderStyle = new
> > pdfTableRowStyle(predefinedFont.csCourierBoldOblique, 10, new
> > pdfColor(predefinedColor.csBlack), new
> > pdfColor(predefinedColor.csLightCyan));
> > myTable.rowStyle = new pdfTableRowStyle(predefinedFont.csCourier, 8, new
> > pdfColor(predefinedColor.csBlack), new pdfColor(predefinedColor.csWhite));
> > myTable.alternateRowStyle = new pdfTableRowStyle(predefinedFont.csCourier,
> > 8, new pdfColor(predefinedColor.csBlack), new
> > pdfColor(predefinedColor.csWhite));
> > myTable.cellpadding = 10;
> >
> > myPage.addTable(myTable, 30, 650);
> > }
> >
> > myTable = null;
> >
> > //Establecemos los numeros de pagina
> > pdfPageMarker marker = new pdfPageMarker(500, 30,
> > predefinedMarkerStyle.csArabic);
> > marker.fontSize = 12;
> > marker.fontType = predefinedFont.csTimes;
> > marker.pattern = "Pagina #n# de #N#";
> > myDoc.pageMarker = marker;
> >
> > myDoc.createPDF("libros.pdf");
> >
> > }
> > catch (Exception ex)
> > {
> > //Console.WriteLine("Se ha producido el siguiente error al generar el pdf: "
> > + ex.Message);
> > throw new LibreriaException("Se ha producido el siguiente error al generar
> > el pdf: " + ex.Message);
> > }
> > }
> > }
> > }
> >
> > Francesc Jaumot
> > España (Lérdia)
> >
> >
> > "Juan Diego Bueno" wrote:
> >
> > > Buenas grupo:
> > >
> > > ¿Conoceis alguna api, o solución (gratuita, of course) que permita
> > > hacer una búsqueda sobre el texto de un pdf desde una aplicación
> > > ..net?. O de pago, mientras que la velocidad de búsqueda valga la pena
> > > para hacer frente a su adquisición
> > >
> > > Saludos
> > >
> > >
>
>
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida