Я пытаюсь объединить несколько 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-файл?