2016-09-08 2 views
-3

Я написал код, который создает простые PDF-документы. Но я не смог отобразить символы unicode в pdf. Мы ценим любые предложения.Проблема, связанная с Unicode в pdf

+0

Я предлагаю вам предоставить более подробную информацию. Как мы можем сказать, что вы делаете неправильно, если просто говорите, что вы * написали код, который генерирует простые pdf-документы *? Все, что нужно сказать, это то, что вы сделали это неправильно. – mkl

+0

Какую библиотеку вы используете для создания PDF (iText или какой-либо другой инструмент)? Какой язык программирования вы используете (Java, C#, ...)? Трудно поверить, что вы ожидаете конкретного ответа на такой неполный вопрос. –

ответ

0

Предположим, что у вас есть следующие String с в Unicode:

public static final String CZECH = 
     "Podivn\u00fd p\u0159\u00edpad Dr. Jekylla a pana Hyda"; 
public static final String RUSSIAN = 
     "\u0421\u0442\u0440\u0430\u043d\u043d\u0430\u044f " 
     + "\u0438\u0441\u0442\u043e\u0440\u0438\u044f " 
     + "\u0434\u043e\u043a\u0442\u043e\u0440\u0430 " 
     + "\u0414\u0436\u0435\u043a\u0438\u043b\u0430 \u0438 " 
     + "\u043c\u0438\u0441\u0442\u0435\u0440\u0430 " 
     + "\u0425\u0430\u0439\u0434\u0430"; 
public static final String KOREAN = 
     "\ud558\uc774\ub4dc, \uc9c0\ud0ac, \ub098"; 

Тогда вам нужно найти шрифт программы, которые способны оказывать эти символы. Например:

public static final String FONT = "src/main/resources/fonts/FreeSans.ttf"; 
public static final String HCRBATANG = "src/main/resources/fonts/HANBatang.ttf"; 

FreeSans - бесплатный шрифт, обычно поставляемый с Linux; он поддерживает много языков, но не все. Например: корейский не поддерживается, поэтому мы также используем HAN Batang.

Мы используем эти программы шрифтов для создания PdfFont объектов, и мы используем эти объекты в Paragraph объектов:

PdfFont freeUnicode = 
    PdfFontFactory.createFont(FONT, PdfEncodings.IDENTITY_H, true); 
document.add(new Paragraph().setFont(freeUnicode) 
    .add(CZECH).add(" by Robert Louis Stevenson")); 
document.add(new Paragraph().setFont(freeUnicode) 
    .add(RUSSIAN).add(" by Robert Louis Stevenson")); 
PdfFont fontUnicode = 
    PdfFontFactory.createFont(HCRBATANG, PdfEncodings.IDENTITY_H, true); 
document.add(new Paragraph().setFont(fontUnicode) 
    .add(KOREAN).add(" by Robert Louis Stevenson")); 

Результат показан на следующем снимке экрана:

enter image description here

As вы можете видеть, что рендеринг Unicode очень прост при использовании iText 7. Этот пример взято из chapter 1 руководства iText 7: Building Blocks.

Если это не информация, которую вы искали, исправьте свой вопрос и объясните, какой инструмент вы использовали вместо iText и какой язык программирования.

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