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#:
Código:
La FUNCION!!!!using System.IO; using iTextSharp.text; using iTextSharp.text.pdf;
Código C#:
Código:
Animaros a echarle un vistazo. 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"); } }