将多页 MigraDoc 文档添加到 PDFSharp 文档

Adding multi page MigraDoc document to a PDFSharp document

在 Migradoc 和 PDFSharp 示例页面中,有一个将 Migradoc 文档绘制到 PDFSharp 文档中:http://www.pdfsharp.net/wiki/MixMigraDocAndPdfSharp-sample.ashx

但是如果我要渲染的 Migradoc 文档超过一页怎么办? 在 Migradoc 中,您不处理页面。它是自动完成的。

编辑:找到我的方式

好吧,一旦你“Prepare()”文档...你就有了 FormattedDocument() 方法,在那里你可以看到它最终有多少页。我在下面添加了我自己的回复。

一旦您 Prepare() Migradoc 文档,您就有了文档的布局和页数。因此,您只需遍历 MigraDoc 文档的每一页,并为每一页在 PdfDocument 中创建一个页面:

private void SampleMultiplePage(ref PdfDocument document, Document migraDocument)
        {
            var pdfRenderer = new DocumentRenderer(migraDocument);

            pdfRenderer.PrepareDocument();

            int pages = pdfRenderer.FormattedDocument.PageCount;
            for (int i = 1; i <= pages; ++i)
            {
                var page = document.AddPage();

                PageInfo pageInfo = pdfRenderer.FormattedDocument.GetPageInfo(i);
                page.Width = pageInfo.Width;
                page.Height = pageInfo.Height;
                page.Orientation = pageInfo.Orientation;

                using (XGraphics gfx = XGraphics.FromPdfPage(page))
                {
                    // HACK²
                    gfx.MUH = PdfFontEncoding.Unicode;
                    gfx.MFEH = PdfFontEmbedding.Default;

                    pdfRenderer.RenderPage(gfx, i);
                }
            }
        }