Die Kombination mehrerer PDF-Dateien mit PDFSharp
Ich versuche zu kombinieren mehrere PDF-Dateien in einer einzigen PDF-Datei. Die PDFs kommen von SSRS, von einigen LocalReports, die ich verarbeitet. Ich bin mit PDFSharp, denn es ist bereits durch aus dem Projekt. Jedoch, die "outputDocument".addPage(Seite) Methoden wirft eine InvalidOperationException("Cannot Dokument ändern.") Ausnahme. Ich habe versucht viele verschiedene Wege, dies zu tun, aber ich kann es nicht zu funktionieren...
Hier meine Methode, wo alle Eingänge wurden bereits überprüft:
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);
}
}
Aus den Beispielen, die ich sah auf dem Netz, dieses scheint der richtige Weg, dies zu tun...
Ich bin geöffnet, um anderen Anregungen für die Zusammenführung der meine PDFs, aber ich würde lieber nicht verwenden, eine andere 3rd-party-lib, wie ITextSharp, weil PDFSharp ist bereits im Projekt verwendet werden.
Wenn es darauf ankommt, bin ich mit VS2010 Pro auf einem Win7 Rechner.
EDIT : Aufruf-stack von der exception :
bei PdfSharp.Pdf.PdfObject.set_Document(PdfDocument-Wert)
bei PdfSharp.Pdf.PdfObject.ImportClosure(PdfImportedObjectTable importedObjectTable, PdfDocument-Besitzer, PdfObject externalObject)
bei PdfSharp.Pdf.PdfPages.CloneElement(PdfPage Seite, PdfPage importPage, String key, Boolean deepcopy)
bei PdfSharp.Pdf.PdfPages.ImportExternalPage(PdfPage importPage)
bei PdfSharp.Pdf.PdfPages.Insert(Int32 index, PdfPage Seite)
bei PdfSharp.Pdf.PdfPages.Add(PdfPage Seite)
bei PdfSharp.Pdf.PdfDocument.AddPage(PdfPage Seite)
auf Etwas.saveFile(String fileName, Byte[][] bytes)
Ist das problem mir ? Ist das nicht die Art und Weise dies gemacht werden soll ?
Oder gibt es eine andere Möglichkeit der Kombination mehrerer LocalReport in einer einzigen PDF-Datei ?
InformationsquelleAutor der Frage Pierre-Olivier Goulet | 2011-02-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin gekommen, zu glauben, dass es vielleicht der Eingang sein, PDF-Dateien, die beschädigt oder unlesbar zu PDFSharp. Es gibt mehrere Beispiele von SSRS PDF-Dateien, nicht lesbare PDF-Bibliotheken oder sogar Adobe Reader. Zum Beispiel hier:
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
... und hier:
https://stackoverflow.com/questions/2393175/ssrs-2008-pdf-files-cannot-be-opened
... UND vor allem auf der PDFSharp forum:
http://forum.pdfsharp.net/viewtopic.php?f=2&t=674
Ich weiß nicht, ob dies ist der Fehler, du bist der Begegnung - die Meldung ist seltsam - aber es scheint wahrscheinlich etwas damit zu tun haben, dass, wenn Sie nehmen Sie zu berücksichtigen, dass Ihre code-Beispiel funktioniert einwandfrei mit jedem PDF habe ich versucht (ich habe keine SQL Server-Berichte zum ausprobieren, obwohl)
InformationsquelleAutor der Antwort asgerhallas
Ich nicht sicher über meine Antwort. Bitte Lesen Sie Ihre selbst.
http://www.go4coding.com/post/2011/05/26/Merging-PDF-files-into-single-PDF-in-CSharp-using-PDFSharp.aspx
InformationsquelleAutor der Antwort Siwakorn.Apichit
Zunächst einmal danke ich Ihnen für Ihr feedback. Das problem kommt nicht von der Komprimierung, da habe ich
<humanreadalble>
wahr</humanreadable>
im mein Gerät-info der Schnur, sonst PDFSharp kann einfach nicht sehen, nichts in der PDF.Habe ich versucht neu zu kompilieren PDFSharp aus dem aktuellen source-code und es funktionierte... Es spielt keine Ausnahme mehr. Die seltsame Sache ist, dass ich überprüft die version meiner dll und es war das gleiche wie das Letzte build. Vielleicht ist Sie etwas fester, ohne Inkrementierung der version ?
Trotzdem vielen Dank für deine Hilfe. Ich nahm Ihre post, als Antwort, um meine Wertschätzung zu zeigen.
InformationsquelleAutor der Antwort Pierre-Olivier Goulet