Buscar texto en PDFs y crear tantos PDFs como textos buscados
Publicado por Kinan (1 intervención) el 28/11/2014 13:55:17
Buenos días a tod@s
Me encuentro en un punto que necesito que alguien vea el código con "otros ojos" y me pueda dar luz para sacar esta función adelante. Gracias de antemano.
Vamos al lío ...A la función en sí, se le pasan como argumentos el nombre que se le pone al pdf resultante y el texto a buscar, en el cuerpo de la función se recorre una lista de string (lstStr) donde cada elemento de la lista corresponde a texto que contiene los pdfs antes procesados y lstFichCarpeta que son los nombres de dichos ficheros, por supuesto si hay tres elementos en lstFichCarpeta hay tres elementos en lstStr. Mi problema es que de la manera que lo he pensado y después de cambiarlo muchas veces ahora me da un error en la variable Copy (Uso de la variable local no asignada 'Copy') que os subrayo en el código.
A ver si alguien me puede dar luz sobre el tema. Gracias
Código C#:
La FUNCION!!!!
Código C#:
Animaros a echarle un vistazo.
Me encuentro en un punto que necesito que alguien vea el código con "otros ojos" y me pueda dar luz para sacar esta función adelante. Gracias de antemano.
Vamos al lío ...A la función en sí, se le pasan como argumentos el nombre que se le pone al pdf resultante y el texto a buscar, en el cuerpo de la función se recorre una lista de string (lstStr) donde cada elemento de la lista corresponde a texto que contiene los pdfs antes procesados y lstFichCarpeta que son los nombres de dichos ficheros, por supuesto si hay tres elementos en lstFichCarpeta hay tres elementos en lstStr. Mi problema es que de la manera que lo he pensado y después de cambiarlo muchas veces ahora me da un error en la variable Copy (Uso de la variable local no asignada 'Copy') que os subrayo en el código.
A ver si alguien me puede dar luz sobre el tema. Gracias
Código C#:
1
2
3
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
La FUNCION!!!!
Código C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
private void Busca_Extrae(string NombreFichSalida, string sTextoBusqueda)
{
try
{
iTextSharp.text.Document NuevoPDF;
iTextSharp.text.pdf.PdfCopy Copy;
//expresiones regulares
Regex re = new Regex(sTextoBusqueda.Trim(), RegexOptions.IgnoreCase | RegexOptions.CultureInvariant);
int iFich = 0; //Contador de la lista de ficheros de la carpeta
NuevoPDF = new Document();
foreach (string sStr in lstStr) //Recorremos el contenido de los ficheros que se han cargado
{
PdfReader Reader = new PdfReader(new RandomAccessFileOrArray(lstFichCarpeta[iFich]), null);
//Busca a traves de todo el texto del PDF, si encuentra al menos una ocurrencia la procesa
if (re.Match(sStr).Success)
{
if (!NuevoPDF.IsOpen())
{
//sabemos que hay se ha encontrado texto, abrimos el fichero
Copy = new PdfCopy(NuevoPDF, new FileStream(NombreFichSalida, FileMode.OpenOrCreate));
NuevoPDF.Open();
}
//Pasamos de tener un string sStr a tener un array de string con una página del pdf
//en cada celda del array StrArr
string[] StrArr = sStr.Split('\f');
int Paginas = Reader.NumberOfPages;
string StrAux;
for (int i = 1; i <= Paginas; i++) //recorremos las paginas del documento activo
{
StrAux = StrArr[i - 1]; //Array base 0, tomo el valor de i-1
if (re.Match(StrAux).Success) //Usamos RegEx para la búsqueda de texto
{ // Si encontramos el texto en la página lo cargamos en el nuevo pdf
Copy.AddPage(Copy.GetImportedPage(Reader, i));
}
} //for .. next
StrAux = null;
Copy.FreeReader(Reader);
iFich += 1;
}
Reader.Close();
}
if (NuevoPDF.IsOpen())
{
NuevoPDF.Close();
}
}
catch
{
MessageBox.Show("Error. No se ha podido extraer la página o crear el nuevo archivo PDF");
}
}
Animaros a echarle un vistazo.
Valora esta pregunta


0