代码之家  ›  专栏  ›  技术社区  ›  Jakir Hossain

使用XGraphics在MigraDoc文档中绘图

  •  2
  • Jakir Hossain  · 技术社区  · 8 年前

    我已经使用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已成功呈现。现在我想在这个文档的页面上添加一些图形。我看了几篇文章,发现每个人都在使用 Pdf文件 类而不是 MigraDoc.Document对象模型.Document .是否可以将图形应用于类型为的文档页面 MigraDoc.Document对象模型.Document 使用XGraphics?如果不可能,混合的最佳方式是什么 Pdf文件 具有 MigraDoc.Document对象模型.Document 实现同样的目标?

    1 回复  |  直到 8 年前
        1
  •  2
  •   I liked the old Stack Overflow    8 年前

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

    有几种方法可以向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