我在我的本地机器上使用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中)
任何的想法?
谢谢
4 回答
根据FAQ日语尚未得到支持 . 支持从左到右的语言,如果您反转字符串,希伯来语可以使用 .
对于日文字符,无论使用MigraDoc(类
Document
)还是PDFsharp(类PdfDocument
),它都没有区别 .这似乎可以解决问题
也可以在PDF文档中嵌入字体,以确保每个人都可以阅读它
我真的很想使用PDFSharp . 但他们说他们不支持CJK或阿拉伯语,但我发现不同 . 我今天亲自调查了这一点,并找到了一种完成所有语言的简单方法 . 它是穷人的方式,但它的工作原理 .
现在在渲染文本时使用此字体 . 我能够测试英语,德语,阿拉伯语,中文,韩语,日语,意大利语,俄语,荷兰语,然后决定我做了足够的测试 .
如果VS2010嵌入文本有趣的副作用,阿拉伯语最多的光标向后工作 . 好的,这将是阿拉伯语的正确方式 . 真棒微软 .
接受的答案对我不起作用,因为默认情况下Windows 10不提供“Arial Unicode MS”,我正在处理的软件必须分发到只安装了默认Windows 10的计算机,所以这个修复赢了不行 .
简单修复:改用“灯线” . 它不像Arial那么好看,所以如果您仍然希望将Arial用于非日语版本的软件,只需检查当前的UI文化是否为日语,并选择“Dengxian”或“Arial”为基础 .
还有其他字体可供选择,这里是我从中识别可用字体的地方:https://en.wikipedia.org/wiki/List_of_typefaces_included_with_Microsoft_Windows?oldformat=true
Alternatively: 您可以将Arial Unicode MS字体嵌入PDF文档中 . 请参阅:Azure PDF Sharp not using Unicode font - 这是我最终采用的解决方案 .