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

Schreibe einen Kommentar