iText7 как в шарпе произвести слияние двух созданных документов?
Ситуация следующая создаю на лету один документ:
public static class OrderPDFExtention
{
public static Document ToPDF(this Order Model, Stream OS)
{
var writer = new PdfWriter(OS);
var doc = new PdfDocument(writer);
var res = new Document(doc, PageSize.A4);
res.SetMargins(40, 30, 40, 40);
for(var i=1;i<5)
{
res.Add(new Paragraph($"Order Line {i}");
}
res.Close();
return res;
}
}
Все создается работает, проблем нет. Создаю второй документ на лету:
public static class AttachmentPDFExtention
{
public static Document ToPDF(this Attachment Model, Stream OS)
{
var writer = new PdfWriter(OS);
var doc = new PdfDocument(writer);
var res = new Document(doc, PageSize.A4);
res.SetMargins(40, 30, 40, 40);
for(var i=1;i<5)
{
res.Add(new Paragraph($"Attachment Line {i}");
}
res.Close();
return res;
}
}
так же создается все работает корректно. Однако, когда я пытаюсь слить оба документа во едино следующим образом:
static void AddAttachment(Attachment Model, PdfDocument Doc, string ONumberDate)
{
var str = new MemoryStream();
var adoc = Model.ToPdfStream(str, ONumberDate);
PdfMerger merger = new PdfMerger(Doc);
merger.Merge(adoc.GetPdfDocument(), 1, adoc.GetPdfDocument().GetNumberOfPages());
merger.Close();
}
соответсвенно изменяя OrderPDFExtention:
public static class OrderPDFExtention
{
public static Document ToPDF(this Order Model, Stream OS)
{
var writer = new PdfWriter(OS);
var doc = new PdfDocument(writer);
var res = new Document(doc, PageSize.A4);
res.SetMargins(40, 30, 40, 40);
for(var i=1;i<5)
{
res.Add(new Paragraph($"Order Line {i}");
}
AddAttachment(Model.Attachment, doc,"12345679");
res.Close();
return res;
}
static void AddAttachment(Attachment Model, PdfDocument Doc, string ONumberDate)
{
var str = new MemoryStream();
var adoc = Model.ToPdfStream(str, ONumberDate);
PdfMerger merger = new PdfMerger(Doc);
merger.Merge(adoc.GetPdfDocument(), 1, adoc.GetPdfDocument().GetNumberOfPages());
merger.Close();
}
}
Выдает следующую ошибку:
iText.Kernel.PdfException: Pdf indirect object belongs to other PDF document. Copy object to current pdf document..
пробовал и через Doc.CopyPagesTo(1, adoc.GetPdfDocument().GetNumberOfPages(), adoc.GetPdfDocument()) - Может кто подскажет как правильно копировать один документ в другой?
От себя скажу, авторы библиотеки iText пытаются объять необъятное, пытаясь создавать как java код на c#...