将多页 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);
}
}
}
在 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);
}
}
}