Я пытаюсь объединить несколько PDF файлов в один PDF файл. PDF файлы поступают из SSRS, из некоторых обработанных мной LocalReports. Я использую PDFSharp, потому что он уже используется через проект. Однако методы outputDocument.addPage(страница) генерируют исключение 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 импортированныйObjectTable, владелец PdfDocument, внешний объект PdfObject)
в 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)
в Something.saveFile(String fileName, Byte [] [] bytes)
Является ли проблема для меня? Разве это не значит, что это должно быть сделано? Или есть ли другой способ объединения нескольких LocalReport в один PDF?