. net c# - MigraDoc -如何更改文档字符集
本文关键字:文档 字符集 何更改 MigraDoc net | 更新日期: 2023-09-27 18:11:37
我一直在寻找这个问题的解决方法,但仍然找不到答案。如有任何帮助,不胜感激。
Document document = new Document();
Section section = document.AddSection();
Paragraph paragraph = section.AddParagraph();
paragraph.Format.Font.Color = Color.FromCmyk(100, 30, 20, 50);
paragraph.AddText("ąčęėįųųūū");
paragraph.Format.Font.Size = 9;
paragraph.Format.Alignment = ParagraphAlignment.Center;
</b>
& lt;…>
在上面的例子中,字符"ąčęėįųųūū"在导出的pdf中不显示。
如何设置"MigraDoc"字符集
告诉Renderer创建一个Unicode文档:
PdfDocumentRenderer renderer = new PdfDocumentRenderer(true, PdfSharp.Pdf.PdfFontEmbedding.Always);
renderer.Document = document;
PdfDocumentRenderer的第一个参数必须为true才能获得Unicode。请注意,并非所有True Type字体都包含所有Unicode字符(但它应该适用于Arial, Verdana等)。
查看完整示例:http://www.pdfsharp.net/wiki/HelloMigraDoc-sample.ashx
如果你正在混合PDFSharp和MigraDoc,就像我一样(这意味着你有一个PDFSharp对象PdfDocument 和一个MigraDoc对象document doc,它被呈现为document的一部分),一切都不是那么简单。PDFSharp团队给出的示例仅在单独使用MigraDoc时有效。
所以你应该这样使用:
- 确保在渲染MigraDoc对象到PDF sharp 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)