首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MigraDoc文档中使用XGraphics绘图

在MigraDoc文档中使用XGraphics绘图
EN

Stack Overflow用户
提问于 2016-07-31 08:27:31
回答 1查看 3.1K关注 0票数 2

我使用MigraDoc生成了一些PDF报告。最初的代码如下:

代码语言:javascript
复制
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类而不是可以使用MigraDoc.DocumentObjectModel.Document将图形应用到XGraphics类型文档的页面中吗?如果不可能,那么将MigraDoc.DocumentObjectModel.Document与PdfDocument混合以实现相同目标的最佳方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-31 15:36:22

MigraDoc使用PDFsharp和XGraphics对象创建PDF页面。

有几种方法可以将内容添加到MigraDoc创建的页面中。

这个MigraDoc示例显示了一些选项:

http://pdfsharp.net/wiki/MixMigraDocAndPdfSharp-sample.ashx

您甚至可以调用MigraDoc来使用“您的”XGraphics对象进行绘图:

代码语言:javascript
复制
// 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 ...");

这篇文章中的代码示例:

http://forum.pdfsharp.net/viewtopic.php?p=9293#p9293

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38682148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档