Estoy tratando de combinar varios archivos PDF en un solo archivo PDF. Los PDF provienen de SSRS, de algunos LocalReports que procesé. Estoy usando PDFSharp, porque ya se usa en todo el proyecto. Sin embargo, los métodos outputDocument.addPage (página) arrojan una excepción InvalidOperationException ("No se puede cambiar el documento."). He probado muchos forma diferente de hacer esto, pero no puedo conseguir que funcione ...Combinación de varios archivos PDF usando PDFSharp
Aquí mi método, donde ya se han comprobado todas las entradas:
private static void saveFile(string fileName, params byte[][] bytes)
{
try
{
PdfDocument outputDocument = new PdfDocument();
for (int i = 0; i < bytes.Length; i++)
{
using (MemoryStream stream = new MemoryStream(bytes[i]))
{
PdfDocument inputDocument = PdfReader.Open(stream, PdfDocumentOpenMode.Import);
foreach (PdfPage page in inputDocument.Pages)
{
outputDocument.AddPage(page); //throws the exception !!!
}
}
}
outputDocument.Save(fileName);
}
catch (Exception ex)
{
throw new Exception("Erreur lors de l'enregistrement du fichier", ex);
}
}
A partir de los ejemplos que vi en la web, esta parece ser la forma correcta de hacer esto ... Estoy abierto a otras sugerencias para fusionar mis archivos PDF, pero preferiría no utilizar otra biblioteca de terceros, como ITextSharp, porque PDFSharp ya se usa en el proyecto.
Si es importante, estoy usando VS2010 Pro en una máquina Win7.
EDIT: Pila de llamadas de la excepción:
en PdfSharp.Pdf.PdfObject.set_Document (valor PdfDocument)
en PdfSharp.Pdf.PdfObject.ImportClosure (PdfImportedObjectTable importedObjectTable, dueño PdfDocument, PdfObject externalObject)
en PdfSharp.Pdf.PdfPages.CloneElement (página PdfPage, PdfPage importPage, String key, deepcopy booleana)
en PdfSharp.Pdf.PdfPages.ImportExternalPage (PdfPage importPage)
en PdfSharp.Pdf.PdfPages.Insert (índice Int32, PdfPage página)
a t PdfSharp.Pdf.PdfPages.Add (página PdfPage)
en PdfSharp.Pdf.PdfDocument.AddPage (página PdfPage)
en Something.saveFile (String nombre de fichero, byte [] [] bytes)
¿Es el problema yo ? ¿No es así como se supone que se debe hacer esto? ¿O existe alguna otra forma de combinar múltiples LocalReport en un solo PDF?
InvalidOperationException –
¿Podrían presentar una pila de llamadas de la excepción? – asgerhallas
Acabo de probar su código con la compilación más reciente de PDFSharp y funciona para mí. Genera muchas páginas y no arroja. ¿Podrías probar con otro conjunto de archivos PDF de entrada? – asgerhallas