MigraDoc/PDFsharp 的日语字符

Japanese characters with MigraDoc/PDFsharp

我在本地计算机上使用 MigraDoc 生成 PDF 文档。日语字符显示不正确。

我正在使用下面的说明生成带有 Unicode 的文档。

var document = new MigraDoc.DocumentObjectModel.Document();
//Do stuff...
PdfDocumentRenderer renderer = new PdfDocumentRenderer(true, PdfSharp.Pdf.PdfFontEmbedding.Always);
renderer.Document = document;

这适用于某些非 ASCII 字符(重音字母),但不适用于日文字符。

根据 PDFsharp 网站上的示例,我认为我应该使用 PdfDocument(而不是 Migradoc 文档)对象,向该文档添加页面,并使用 Migradoc 对象填充页面

http://www.pdfsharp.net/wiki/MixMigraDocAndPdfSharp-sample.ashx

但是,我已经有了一个使用 Migradoc 创建的复杂的多页文档结构;所以我希望能够按原样重用它(例如,将它一次性包含在 PdfDocument 中)

有什么想法吗?

谢谢

根据 FAQ 尚不支持日语。支持从左到右的语言,如果您反转字符串,则希伯来语有效。

对于日语字符,使用 MigraDoc (class Document) 还是 PDFsharp (class PdfDocument) 应该没有区别。

这似乎可以解决问题

document.Styles[StyleNames.Normal].Font.Name = "Arial Unicode MS";

也可以在PDF文档中嵌入字体,以确保每个人都能阅读

我真的很想用 PDFSharp。但他们说他们不支持 CJK 或阿拉伯语,但我发现不同。我今天自己研究了一下,发现了一种非常简单的方法来完成所有语言。这是穷人的方式,但它有效。

// Set font encoding to unicode always
XPdfFontOptions options = new XPdfFontOptions(PdfFontEncoding.Unicode, PdfFontEmbedding.Always);
// Then use the font with the most language support
XFont font = new XFont("Arial Unicode MS", 12, XFontStyle.Regular, options);

现在在渲染文本时使用此字体。我能够测试英语、德语、阿拉伯语、中文、韩语、日语、意大利语、俄语、荷兰语,然后决定我做了足够的测试。

如果 VS2010,嵌入文本的有趣副作用,阿拉伯语最多的光标向后工作。好的,这对阿拉伯语来说是正确的方式吗?很棒的微软。

已接受的答案对我不起作用,因为 'Arial Unicode MS' 默认情况下无法使用 Windows 10,而且我正在使用的软件必须分发到仅具有默认安装 Windows 10 个,因此此修复程序无效。

简单修复: 请改用 "Dengxian"。它不如 Arial 好看,因此如果您仍想将 Arial 用于非日语版本的软件,只需检查当前 UI 文化是否为日语,然后选择 'Dengxian' 或 'Arial' 基于此。

还有其他字体可供选择,这里是我确定可用字体的地方:https://en.wikipedia.org/wiki/List_of_typefaces_included_with_Microsoft_Windows?oldformat=true

或者: 您可以将 Arial Unicode MS 字体嵌入到 PDF 文档中。请参阅: - 这是我最终采用的解决方案。