Saltar al contenido

No se pueden fusionar 2 archivos PDF con MemoryStream

Presta atención ya que en este enunciado hallarás la solución que buscas.Este artículo ha sido evaluado por nuestros especialistas para asegurar la calidad y exactitud de nuestro post.

Solución:

Fusionar pdf en C# o cualquier otro lenguaje no es sencillo sin usar una biblioteca de terceros.

Supongo que su requisito para no usar la biblioteca es que la mayoría de las bibliotecas gratuitas, los paquetes nuget tienen limitaciones o cuestan dinero para uso comercial.

Investigué y encontré una biblioteca de código abierto llamada PdfClown con paquete nuget, también está disponible para Java. Es gratis sin limitación (dona si quieres). La biblioteca tiene muchas características. Uno de ellos puede fusionar 2 o más documentos en un solo documento.

Proporciono mi ejemplo que toma una carpeta con varios archivos pdf, los fusiona y los guarda en la misma u otra carpeta. También es posible usar MemoryStream, pero no lo encuentro necesario en este caso.

El código es auto explicativo, el key el punto aquí es usar SerializationModeEnum.Incremental:

public static void MergePdf(string srcPath, string destFile)

para probarlo

var srcPath = @"C:temppdfinput";
var destFile = @"c:temppdfoutputmerged.pdf";
MergePdf(srcPath, destFile);

Ejemplos de entrada
PDF documento A y PDF documento B

PDF documento A y PDF documento B

Ejemplo de salida

fusionado

Enlaces a mi investigación:

  • https://csharp-source.net/open-source/pdf-libraries
  • https://sourceforge.net/projects/clown/
  • https://www.oipapio.com/pregunta-3526089

Descargo de responsabilidad: una parte de esta respuesta está tomada de mi sitio web personal https://itbackyard.com/merge-multiple-pdf-files-to-one-pdf-file-in-c/ con código fuente en github.

Esta respuesta de Stack Overflow (Combinar dos (o más) PDF) de Andrew Burns funciona para mí:

        using (PdfDocument one = PdfReader.Open("pdf 1.pdf", PdfDocumentOpenMode.Import))
        using (PdfDocument two = PdfReader.Open("pdf 2.pdf", PdfDocumentOpenMode.Import))
        using (PdfDocument outPdf = new PdfDocument())
        
            CopyPages(one, outPdf);
            CopyPages(two, outPdf);

            outPdf.Save("file1and2.pdf");
        

        void CopyPages(PdfDocument from, PdfDocument to)
        
            for (int i = 0; i < from.PageCount; i++)
            
                to.AddPage(from.Pages[i]);
            
        

Así no es como funcionan los archivos PDF. Los PDF son archivos estructurados en un formato específico. No puede simplemente agregar los bytes de uno al otro y esperar que el resultado sea un documento válido.

Vas a tener que usar una biblioteca que entienda el formato y pueda hacer la operación por ti, o desarrollar tu propia solución.

Reseñas y calificaciones

Recuerda algo, que tienes concesión de decir si chocaste tu disgusto en el momento justo.

¡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 *