2015-11-14 3 views
0

Я использую MigraDoc для создания документов PDF на моей локальной машине. Японские символы отображаются неправильно.Японские символы с MigraDoc/PDFsharp

Я использую следующие инструкции, чтобы сгенерировать документ с помощью Unicode.

var document = new MigraDoc.DocumentObjectModel.Document(); 
//Du 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

Это, кажется, сделать трюк

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

Также можно вставлять шрифты в PDF документе, чтобы убедиться, что каждый может прочитать его

+0

Итак, тривиальный ответ: японские символы будут отображаться только в том случае, если вы используете шрифт с японскими символами. Установка шрифта для стиля Normal - один из способов достижения этого. Я не могу читать по-японски, поэтому я не знаю, все ли это необходимо. Может быть, FAQ следует обновлять, если это действительно все. –

+0

В моем приложении японские символы отображаются только в таблицах, как метки строк. Я тоже не могу читать по-японски, но, может быть, если мне нужно будет писать абзацы, которые будут читать справа налево, это не сработает. Возможно, это то, что означает документ – David

0

Согласно FAQ японцам пока не поддерживаются. Поддерживаются левые права, иврит работает, если вы меняете строки.

В отношении японских символов не должно быть никакого значения, используете ли вы MigraDoc (класс Document) или PDFsharp (класс PdfDocument).

+0

Из этого ответа, даже если он официально не поддерживается, кажется, что я все еще могу работать. http://stackoverflow.com/questions/14746920/pdfsharp-with-chinese-characters – David

-1

Я действительно хотел бы использовать 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, с арабским, самый курсор работает назад. Хорошо, это правильный путь для арабского. Удивительный Microsoft.

Смежные вопросы