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#...


Ответы (0 шт):