【问题标题】:Drawing in MigraDoc document using XGraphics使用 XGraphics 在 MigraDoc 文档中绘图
【发布时间】:2023-03-26 15:40:01
【问题描述】:

我使用 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 类而不是 MigraDoc.DocumentObjectModel.Document。是否可以使用 XGraphics 将图形应用到 MigraDoc.DocumentObjectModel.Document 类型文档的页面中?如果不可能,将 PdfDocumentMigraDoc.DocumentObjectModel.Document 混合以实现相同目的的最佳方法是什么?

【问题讨论】:

    标签: pdfsharp migradoc


    【解决方案1】:

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

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

    这个 MigraDoc 示例显示了一些选项:
    http://pdfsharp.net/wiki/MixMigraDocAndPdfSharp-sample.ashx

    您甚至可以调用 MigraDoc 以使用“您的”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 ...");
    

    取自这篇帖子的示例代码:
    http://forum.pdfsharp.net/viewtopic.php?p=9293#p9293

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-01
      • 2019-09-03
      • 1970-01-01
      • 2017-11-18
      • 2013-10-16
      • 2018-02-26
      相关资源
      最近更新 更多