2016-07-31 87 views
1

我已经使用MigraDoc生成了一些PDF报告。初始代码如下: -使用XGraphics绘制MigraDoc文档

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来完成相同的?

回答

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