使用 XGraphics 在 MigraDoc 文档中绘图
Drawing in MigraDoc document using XGraphics
我使用 MigraDoc 生成了一些 PDF 报告。初始代码如下:-
MigraDoc.DocumentObjectModel.Document document = new MigraDoc.DocumentObjectModel.Document();
MigraDoc.DocumentObjectModel.Section section = document.AddSection();
...
Paragraph paragraph = section.Headers.Primary.AddParagraph();
....
table = section.AddTable();
...
paragraph = section.Footers.Primary.AddParagraph();
...
PDF 渲染成功。现在我想在本文档的页面中添加一些图形。为此,我浏览了几篇文章,发现每个人都使用 PdfDocument class 而不是 MigraDoc.DocumentObjectModel.Document。是否可以使用 XGraphics 将图形应用到 MigraDoc.DocumentObjectModel.Document 类型文档的页面中?如果不可能,将 PdfDocument 与 MigraDoc.DocumentObjectModel.Document 混合使用的最佳方法是什么?
MigraDoc 使用 PDFsharp 和 XGraphics 对象创建 PDF 页面。
有多种方法可以将内容添加到 MigraDoc 创建的页面。
此 MigraDoc 示例显示了一些选项:
http://pdfsharp.net/wiki/MixMigraDocAndPdfSharp-sample.ashx
您甚至可以调用 MigraDoc 以使用 "your" XGraphics 对象进行绘图:
// Alternative rendering with progress indicator.
// Set a callback for phase 1.
pdfRenderer.DocumentRenderer.PrepareDocumentProgress += PrepareDocumentProgress;
// Now start phase 1: Preparing pages (i.e. calculate the layout).
pdfRenderer.PrepareRenderPages();
// Now phase 2: create the PDF pages.
Console.WriteLine("\r\nRendering document ...");
int pages = pdfRenderer.DocumentRenderer.FormattedDocument.PageCount;
for (int i = 1; i <= pages; ++i)
{
var page = pdfRenderer.PdfDocument.AddPage();
Console.Write("\rRendering page " + i + "/" + pages);
PageInfo pageInfo = pdfRenderer.DocumentRenderer.FormattedDocument.GetPageInfo(i);
page.Width = pageInfo.Width;
page.Height = pageInfo.Height;
page.Orientation = pageInfo.Orientation;
using (XGraphics gfx = XGraphics.FromPdfPage(page))
{
gfx.MUH = pdfRenderer.Unicode ? PdfFontEncoding.Unicode : PdfFontEncoding.WinAnsi;
gfx.MFEH = pdfRenderer.FontEmbedding;
pdfRenderer.DocumentRenderer.RenderPage(gfx, i);
}
}
Console.WriteLine("\r\nSaving document ...");
示例代码取自 post:
http://forum.pdfsharp.net/viewtopic.php?p=9293#p9293
我使用 MigraDoc 生成了一些 PDF 报告。初始代码如下:-
MigraDoc.DocumentObjectModel.Document document = new MigraDoc.DocumentObjectModel.Document();
MigraDoc.DocumentObjectModel.Section section = document.AddSection();
...
Paragraph paragraph = section.Headers.Primary.AddParagraph();
....
table = section.AddTable();
...
paragraph = section.Footers.Primary.AddParagraph();
...
PDF 渲染成功。现在我想在本文档的页面中添加一些图形。为此,我浏览了几篇文章,发现每个人都使用 PdfDocument class 而不是 MigraDoc.DocumentObjectModel.Document。是否可以使用 XGraphics 将图形应用到 MigraDoc.DocumentObjectModel.Document 类型文档的页面中?如果不可能,将 PdfDocument 与 MigraDoc.DocumentObjectModel.Document 混合使用的最佳方法是什么?
MigraDoc 使用 PDFsharp 和 XGraphics 对象创建 PDF 页面。
有多种方法可以将内容添加到 MigraDoc 创建的页面。
此 MigraDoc 示例显示了一些选项:
http://pdfsharp.net/wiki/MixMigraDocAndPdfSharp-sample.ashx
您甚至可以调用 MigraDoc 以使用 "your" XGraphics 对象进行绘图:
// Alternative rendering with progress indicator.
// Set a callback for phase 1.
pdfRenderer.DocumentRenderer.PrepareDocumentProgress += PrepareDocumentProgress;
// Now start phase 1: Preparing pages (i.e. calculate the layout).
pdfRenderer.PrepareRenderPages();
// Now phase 2: create the PDF pages.
Console.WriteLine("\r\nRendering document ...");
int pages = pdfRenderer.DocumentRenderer.FormattedDocument.PageCount;
for (int i = 1; i <= pages; ++i)
{
var page = pdfRenderer.PdfDocument.AddPage();
Console.Write("\rRendering page " + i + "/" + pages);
PageInfo pageInfo = pdfRenderer.DocumentRenderer.FormattedDocument.GetPageInfo(i);
page.Width = pageInfo.Width;
page.Height = pageInfo.Height;
page.Orientation = pageInfo.Orientation;
using (XGraphics gfx = XGraphics.FromPdfPage(page))
{
gfx.MUH = pdfRenderer.Unicode ? PdfFontEncoding.Unicode : PdfFontEncoding.WinAnsi;
gfx.MFEH = pdfRenderer.FontEmbedding;
pdfRenderer.DocumentRenderer.RenderPage(gfx, i);
}
}
Console.WriteLine("\r\nSaving document ...");
示例代码取自 post:
http://forum.pdfsharp.net/viewtopic.php?p=9293#p9293