如果您像我一样混合 PDFSharp 和 MigraDoc(这意味着您有一个 PdfSharp 对象PdfDocument 文档和一个 MigraDoc 对象Document doc,它被呈现为文档的一部分),一切都不是那么简单。PDFSharp 团队给出的示例仅在您单独使用 MigraDoc 时才有效。
所以你应该这样使用它:
- 确保在将 MigraDoc 对象渲染到 PDF 清晰XGraphics gfx之前渲染 MigraDoc 文档。
- 使用 hack 为 gfx 对象设置编码。
XGraphics gfx = XGraphics.FromPdfPage(page);
// HACK²
gfx.MUH = PdfFontEncoding.Unicode;
gfx.MFEH = PdfFontEmbedding.Always;
// HACK²
Document doc = new Document();
PdfDocumentRenderer pdfRenderer = new PdfDocumentRenderer(true, PdfFontEmbedding.Always);
pdfRenderer.Document = doc;
pdfRenderer.RenderDocument();
MigraDoc.Rendering.DocumentRenderer docRenderer = new DocumentRenderer(doc);
docRenderer.PrepareDocument();
docRenderer.RenderObject(gfx, XUnit.FromCentimeter(5), XUnit.FromCentimeter(10), "12cm", para);
对于 1.5.x-betax
let gfx = XGraphics.FromPdfPage(page)
gfx.MUH <- PdfFontEncoding.Unicode
let doc = new Document()
let pdfRenderer = new PdfDocumentRenderer(true, PdfFontEmbedding.Always)
pdfRenderer.Document <- doc
pdfRenderer.RenderDocument()
let docRenderer = new DocumentRenderer(doc)
docRenderer.PrepareDocument()
docRenderer.RenderObject(gfx, XUnit.FromCentimeter 5, XUnit.FromCentimeter 10, "12cm", para)