带有MigraDoc/PDFsharp的日语字符

本文关键字:日语 字符 PDFsharp MigraDoc 带有 | 更新日期: 2023-09-27 18:22:02

我在本地机器上使用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中)

知道吗?

感谢

带有MigraDoc/PDFsharp的日语字符

这似乎是的诀窍

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

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

根据常见问题解答,目前还不支持日语。支持从左到右的语言,如果反转字符串,则希伯来语有效。

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

我真的很想使用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的计算机上,所以此修复程序不起作用。

简单修复:用"邓仙"代替。它没有Arial好看,所以如果你仍然想在软件的非日语版本中使用Arial,只需检查当前的用户界面文化是否是日语,并根据这一点选择"Dengxian"或"Arial"。

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

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