Объединение нескольких PDF-файлов с помощью PDFSharp

Я пытаюсь объединить несколько PDF-файлов в один PDF-файл. PDF-файлы поступают из SSRS, из некоторых обработанных мной LocalReports. Я использую PDFSharp, потому что он уже используется в проекте. Однако файл outputDocument. Методы addPage (page) вызывают исключение InvalidOperationException («Невозможно изменить документ.»). Я пробовал много разных способов сделать это, но не могу заставить его работать ...

Вот мой метод, где все входные данные уже проверены:

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

Из примеров, которые я видел в сети, кажется, это правильный способ сделать это ... Я открыт для других предложений по объединению моих PDF-файлов, но я бы предпочел не использовать другую стороннюю библиотеку, например ITextSharp, потому что PDFSharp уже используется в проекте.

Если это имеет значение, я использую VS2010 Pro на машине Win7. .

EDIT: Стек вызовов из исключения:
в PdfSharp.Pdf.PdfObject.set_Document (значение PdfDocument)
в PdfSharp.Pdf.PdfObject.ImportClosure (PdfImportedObjectTable importObjectTable, владелец PdfDocument, PdfObject externalObject)
в PdfSharp.Pdf.PdfPages.CloneElement (страница PdfPage, PdfPage importPage, строковый ключ, логическая глубокая копия)
в PdfSharp.Pdf.PdfPages.ImportExternalPage (PdfPage importPage)
в PdfSharp.Pdf.PdfPages.Insert (индекс Int32, страница PdfPage)
в PdfSharp.Pdf.PdfPages.Add (страница PdfPage)
в PdfSharp.Pdf.PdfDocument.AddPage (страница PdfPage)
at Something.saveFile (String fileName, Byte [] [] bytes)

Проблема во мне? Разве это не так, как предполагалось? Или есть какой-либо другой способ объединить несколько LocalReport в один PDF-файл?

17
задан Pierre-Olivier Goulet 14 February 2011 в 20:03
поделиться