使用 MigraDoc DocumentRenderer 在 PDF 中显示 Unicode 字符
Display Unicode characters in PDF using MigraDoc DocumentRenderer
我正在尝试在我的 PDF 生成器中使用 Unicode 字符。我首先使用 PDFsharp 为页面创建主要布局(例如每个页面上的水印和形状),然后尝试使用 MigraDoc 添加文本。虽然在 PDFsharp 中一切都与字体相得益彰并且代码运行良好,但 MigraDoc 会创建空字符。简单代码如下所示:
//with PDFsharp
PdfDocument document = new PdfDocument();
PdfPage page = document.AddPage();
XGraphics gfx = XGraphics.FromPdfPage(page);
string s = "ĄŻŹĆĘŁÓążźęćłó";
XFont font16 = new XFont("Calibri", 16, XFontStyle.Regular);
gfx.DrawString(s, font16, XBrushes.Black, 70, 50, XStringFormats.Default);
//with MigraDoc
Document doc = new Document();
Section sec = doc.AddSection();
Paragraph para = sec.AddParagraph();
para.Format.Font.Name = "Calibri";
para.Format.Font.Size = 16;
para.AddText(s);
MigraDoc.Rendering.DocumentRenderer docRenderer = new DocumentRenderer(doc);
docRenderer.PrepareDocument();
docRenderer.RenderPage(gfx, 1);
//
document.Save("test.pdf");
Process.Start("test.pdf");
我尝试了不同的字体,但没有任何效果。
在调用任何 MigraDoc 代码之前尝试为 gfx
设置 gfx.MUH = PdfFontEncoding.Unicode;
。
初学者阅读这里的注意事项:如果使用PdfDocumentRenderer
,生活会更简单:
您可以仅使用 MigraDoc 功能将图像或 PDF 页面用作页面背景,而无需混合使用 MigraDoc 和 PDFsharp。
DocumentRenderer
允许混合使用 PDFsharp 和 MigraDoc - 以实现超出 MigraDoc 单独功能的功能。在这种情况下,您必须使用上面显示的 MigraDoc Unicode Hack MUH 来启用 Unicode 支持。 MUH也用在了PDFsharp网站的官方混音样本中:
http://www.pdfsharp.net/wiki/MixMigraDocAndPdfSharp-sample.ashx
在 PDFsharp 论坛上发布的这个示例中也使用了它:
http://forum.pdfsharp.net/viewtopic.php?f=8&t=3172
我正在尝试在我的 PDF 生成器中使用 Unicode 字符。我首先使用 PDFsharp 为页面创建主要布局(例如每个页面上的水印和形状),然后尝试使用 MigraDoc 添加文本。虽然在 PDFsharp 中一切都与字体相得益彰并且代码运行良好,但 MigraDoc 会创建空字符。简单代码如下所示:
//with PDFsharp
PdfDocument document = new PdfDocument();
PdfPage page = document.AddPage();
XGraphics gfx = XGraphics.FromPdfPage(page);
string s = "ĄŻŹĆĘŁÓążźęćłó";
XFont font16 = new XFont("Calibri", 16, XFontStyle.Regular);
gfx.DrawString(s, font16, XBrushes.Black, 70, 50, XStringFormats.Default);
//with MigraDoc
Document doc = new Document();
Section sec = doc.AddSection();
Paragraph para = sec.AddParagraph();
para.Format.Font.Name = "Calibri";
para.Format.Font.Size = 16;
para.AddText(s);
MigraDoc.Rendering.DocumentRenderer docRenderer = new DocumentRenderer(doc);
docRenderer.PrepareDocument();
docRenderer.RenderPage(gfx, 1);
//
document.Save("test.pdf");
Process.Start("test.pdf");
我尝试了不同的字体,但没有任何效果。
在调用任何 MigraDoc 代码之前尝试为 gfx
设置 gfx.MUH = PdfFontEncoding.Unicode;
。
初学者阅读这里的注意事项:如果使用PdfDocumentRenderer
,生活会更简单:
您可以仅使用 MigraDoc 功能将图像或 PDF 页面用作页面背景,而无需混合使用 MigraDoc 和 PDFsharp。
DocumentRenderer
允许混合使用 PDFsharp 和 MigraDoc - 以实现超出 MigraDoc 单独功能的功能。在这种情况下,您必须使用上面显示的 MigraDoc Unicode Hack MUH 来启用 Unicode 支持。 MUH也用在了PDFsharp网站的官方混音样本中:
http://www.pdfsharp.net/wiki/MixMigraDocAndPdfSharp-sample.ashx
在 PDFsharp 论坛上发布的这个示例中也使用了它:
http://forum.pdfsharp.net/viewtopic.php?f=8&t=3172