В документах приведен пример кода для добавления нескольких документов PDF в один. Но я хочу объединить несколько документов MigraDoc в один.
Код, который у меня пока есть:
private void GeneratePdfDocument(IEnumerable<Document> parts, string fileName)
{
using (var outputDocument = new PdfDocument())
{
foreach (var part in parts)
{
var renderer = new PdfDocumentRenderer(false, PdfFontEmbedding.Always);
renderer.Document = part;
renderer.RenderDocument();
var pdfPart = renderer.PdfDocument;
for (var pageIndex = 0; pageIndex < pdfPart.PageCount; pageIndex++)
{
outputDocument.AddPage(pdfPart.Pages[pageIndex]);
}
}
// create the PDF
outputDocument.Save(fileName);
}
}
Но на AddPage
я получаю System.InvalidOperationException
:
A PDF document must be opened with PdfDocumentOpenMode.Import to import pages from it.
Решение состоит в том, чтобы создать каждую Document
часть в виде отдельного PDF, а затем объединить их все в один файл PDF, но не для всех деталей потребуется целая страница.
EDIT:
Я пробовал также следующий подход:
var combineDocument = new Document();
foreach (var part in parts)
{
//for(var styleIndex = 0; styleIndex < part.Styles.Count; styleIndex++)
//{
// combineDocument.Add(part.Styles[styleIndex]);
//}
for(var sectionIndex = 0; sectionIndex < part.Sections.Count; sectionIndex++)
{
var section = part.Sections[sectionIndex].Clone();
combineDocument.Add(section);
}
}
Идея состояла в том, чтобы скопировать разделы каждого Document
в экземпляр combineDocument
, но мне не удалось получить экземпляры Style
, и результат оказался не таким, как ожидалось.
Вопрос:
Можно ли объединить экземпляры MigraDoc Document
в один документ?