首页 文章

带有MigraDoc / PDFsharp的日文字符

提问于
浏览
0

我在我的本地机器上使用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 回答

  • 0

    根据FAQ日语尚未得到支持 . 支持从左到右的语言,如果您反转字符串,希伯来语可以使用 .

    对于日文字符,无论使用MigraDoc(类 Document )还是PDFsharp(类 PdfDocument ),它都没有区别 .

  • 5

    这似乎可以解决问题

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

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

  • 0

    我真的很想使用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嵌入文本有趣的副作用,阿拉伯语最多的光标向后工作 . 好的,这将是阿拉伯语的正确方式 . 真棒微软 .

  • 0

    接受的答案对我不起作用,因为默认情况下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 - 这是我最终采用的解决方案 .

相关问题