examples ejemplos c# ssrs-2008 pdfsharp

c# - ejemplos - Combinando mĂșltiples PDFs usando PDFSharp



pdfsharp ejemplos c# (3)

En primer lugar, gracias por sus comentarios. El problema no proviene de la compresión porque tengo <humanreadalble> true </humanreadable> en la cadena de información de mi dispositivo, de lo contrario, PDFSharp simplemente no puede ver nada en el PDF.

Intenté recompilar PDFSharp desde el último código fuente, y funcionó ... Ya no se produce la excepción. Lo extraño es que verifiqué la versión de mi dll y fue la misma que la última versión. ¿Tal vez arreglaron algo sin incrementar la versión?

De todos modos, gracias por su ayuda. Acepté tu publicación como la respuesta para mostrar mi agradecimiento.

Estoy tratando de combinar varios archivos PDF en un solo PDF. Los archivos PDF provienen de SSRS, de algunos Informes locales que procesé. Estoy usando PDFSharp, porque ya se usa en todo el proyecto. Sin embargo, los métodos outputDocument.addPage (página) generan una excepción InvalidOperationException ("No se puede cambiar el documento"). He intentado muchas maneras diferentes de hacer esto, pero no puedo hacerlo funcionar ...

Aquí mi método, donde todas las entradas ya han sido verificadas:

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); } }

De los ejemplos que vi en la web, esta parece ser la forma correcta de hacerlo ... Estoy abierto a otras sugerencias para fusionar mis archivos PDF, pero preferiría no utilizar otra biblioteca de terceros, como ITextSharp, porque PDFSharp es Ya se utiliza 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 importsObjectTable, propietario de PdfDocument, PdfObject externalObject)
en PdfSharp.Pdf.PdfPages.CloneElement (página PdfPage, PdfPage importPage, String Key, Boolean deepcopy)
en PdfSharp.Pdf.PdfPages.ImportExternalPage (PdfPage importPage)
en PdfSharp.Pdf.PdfPages.Insert (índice Int32, página PdfPage)
en PdfSharp.Pdf.PdfPages.Add (página PdfPage)
en PdfSharp.Pdf.PdfDocument.AddPage (página PdfPage)
en Something.saveFile (String fileName, Byte [] [] bytes)

¿El problema es yo? ¿No es así como se supone que se debe hacer? ¿O hay alguna otra manera de combinar múltiples Informes Locales en un solo PDF?


He llegado a creer que podrían ser los PDF de entrada los que están dañados o no se pueden leer en PDFSharp. Hay varios ejemplos de archivos PDF de SSRS que no se pueden leer en bibliotecas PDF o incluso en Adobe Reader. Por ejemplo aquí:

http://www.sqldev.org/sql-server-reporting-services/export-pdf-in-ssrs-2008-vs-ssrs-2005--pdf-is-different-wont-work-with-itextsharp-possibly-other-13968.shtml

... y aquí:

https://.com/questions/2393175/ssrs-2008-pdf-files-cannot-be-opened

... Y lo más importante en el foro PDFSharp:

http://forum.pdfsharp.net/viewtopic.php?f=2&t=674

No sé si este es el error con el que te encuentras, el mensaje es extraño, pero parece que tiene algo que ver con eso, cuando consideras que tu ejemplo de código funciona perfectamente con cualquier PDF que probé ( No tengo ningún informe de SQL Server para probar, sin embargo)


No estoy seguro de mi respuesta. Por favor lee tu auto

http://www.go4coding.com/post/2011/05/26/Merging-PDF-files-into-single-PDF-in-CSharp-using-PDFSharp.aspx

private static void MergeMultiplePDFIntoSinglePDF(string outputFilePath, string[] pdfFiles) { Console.WriteLine("Merging started....."); PdfDocument outputPDFDocument = new PdfDocument(); foreach (string pdfFile in pdfFiles) { PdfDocument inputPDFDocument = PdfReader.Open(pdfFile, PdfDocumentOpenMode.Import); outputPDFDocument.Version = inputPDFDocument.Version; foreach (PdfPage page in inputPDFDocument.Pages) { outputPDFDocument.AddPage(page); } } outputPDFDocument.Save(outputFilePath); Console.WriteLine("Merging Completed"); }