Saltar al contenido

Fusionar múltiples archivos PDF usando iTextSharp en c#.net

Nuestro grupo redactor ha estado mucho tiempo investigando la respuesta a tu interrogante, te compartimos la resolución y deseamos resultarte de gran apoyo.

Solución:

Encontré la respuesta:

En lugar del segundo método, agregue más archivos al primero array de archivos de entrada.

public static void CombineMultiplePDFs(string[] fileNames, string outFile)

    // step 1: creation of a document-object
    Document document = new Document();
    //create newFileStream object which will be disposed at the end
    using (FileStream newFileStream = new FileStream(outFile, FileMode.Create))
    
       // step 2: we create a writer that listens to the document
       PdfCopy writer = new PdfCopy(document, newFileStream );
       if (writer == null)
       
           return;
       

       // step 3: we open the document
       document.Open();

       foreach (string fileName in fileNames)
       
           // we create a reader for a certain document
           PdfReader reader = new PdfReader(fileName);
           reader.ConsolidateNamedDestinations();

           // step 4: we add content
           for (int i = 1; i <= reader.NumberOfPages; i++)
                           
               PdfImportedPage page = writer.GetImportedPage(reader, i);
               writer.AddPage(page);
           

           PRAcroForm form = reader.AcroForm;
           if (form != null)
           
               writer.CopyAcroForm(reader);
           

           reader.Close();
       

       // step 5: we close the document and writer
       writer.Close();
       document.Close();
   //disposes the newFileStream object

Encontré una muy buena solución en este sitio: http://weblogs.sqlteam.com/mladenp/archive/2014/01/10/simple-merging-of-pdf-documents-with-itextsharp-5-4-5. aspx

Actualizo el método en este modo:

    public static bool MergePDFs(IEnumerable fileNames, string targetPdf)
    
        bool merged = true;
        using (FileStream stream = new FileStream(targetPdf, FileMode.Create))
        
            Document document = new Document();
            PdfCopy pdf = new PdfCopy(document, stream);
            PdfReader reader = null;
            try
            
                document.Open();
                foreach (string file in fileNames)
                
                    reader = new PdfReader(file);
                    pdf.AddDocument(reader);
                    reader.Close();
                
            
            catch (Exception)
            
                merged = false;
                if (reader != null)
                
                    reader.Close();
                
            
            finally
            
                if (document != null)
                
                    document.Close();
                
            
        
        return merged;
    

Código para fusionar archivos PDF en Itextsharp

 public static void Merge(List InFiles, String OutFile)
    {

        using (FileStream stream = new FileStream(OutFile, FileMode.Create))
        using (Document doc = new Document())
        using (PdfCopy pdf = new PdfCopy(doc, stream))
        
            doc.Open();

            PdfReader reader = null;
            PdfImportedPage page = null;

            //fixed typo
            InFiles.ForEach(file =>
            
                reader = new PdfReader(file);

                for (int i = 0; i < reader.NumberOfPages; i++)
                
                    page = pdf.GetImportedPage(reader, i + 1);
                    pdf.AddPage(page);
                

                pdf.FreeReader(reader);
                reader.Close();
                File.Delete(file);
            );
        

Puedes añadir valor a nuestro contenido informacional participando con tu veteranía en los informes.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *