带有MigraDoc / PDFsharp的日文字符

时间:2015-11-14 09:11:40

标签: c# unicode pdfsharp migradoc

我在本地计算机上使用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 :(得分:5)

这似乎可以解决问题

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

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

答案 1 :(得分:0)

根据FAQ日语尚不支持。支持从左到右的语言,如果你颠倒字符串,希伯来语就可以工作。

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

答案 2 :(得分:0)

我真的很想使用PDFSharp。但他们说他们不支持CJK或阿拉伯语,但我发现不同。我今天亲自调查了这一点,并找到了一种完成所有语言的简单方法。它是穷人的方式,但它的工作原理。

<div class="container">
        <div class="rows">
            <div id="articleslist">
                <div class="article">
                    <article class="item">
                        <div class="item_inner">
                            <div class="image-video-linkmas">
                                <a href="#" target=
                                "_blank"><img alt="#" src=
                                "http://lorempixel.com/400/400"></a>
                                <div class="brandmas">
                                    BRAND CAR
                                </div>
                                <div class="categorymas">
                                   SELLER CAR
                                </div>
                            </div>
                        </div>
                    </article>
                </div>
            </div>
        </div>
    </div>

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

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

答案 3 :(得分:0)

接受的答案对我不起作用,因为&#39; Arial Unicode MS&#39;在Windows 10中默认不可用,我正在处理的软件必须分发到只安装了默认Windows 10的计算机,因此此修复程序无法正常工作。

简单修复: 使用&#34; Dengxian&#34;代替。它不像Arial那么好看,所以如果你仍然想在你的软件的非日语版本中使用Arial,只需检查当前的UI文化是否是日语,并选择“等等”和“等”。或者&#39; Arial&#39;基于此。

还有其他字体可供选择,我在这里找到了来自https://en.wikipedia.org/wiki/List_of_typefaces_included_with_Microsoft_Windows?oldformat=true的可用字体

<强>可替换地: 您可以将Arial Unicode MS字体嵌入到PDF文档中。请参阅:Azure PDF Sharp not using Unicode font - 这是我最终采用的解决方案。