Я использую библиотеку Java под названием PDFBox, пытаясь записать текст в PDF. Он отлично подходит для английского текста, но когда я пытался писать русский текст внутри PDF, письма выглядели настолько странно. Кажется, проблема в используемом шрифте, но я не настолько уверен в этом, поэтому надеюсь, что кто-нибудь сможет мне помочь в этом. Вот важные строки кода:
PDTrueTypeFont font = PDTrueTypeFont.loadTTF( pdfFile, new File( "fonts/VREMACCI.TTF" ) ); // Windows Russian font imported to write the Russian text.
font.setEncoding( new WinAnsiEncoding() ); // Define the Encoding used in writing.
// Some code here to open the PDF & define a new page.
contentStream.drawString( "отделом компьютерной" ); // Write the Russian text.
Исходный код WinAnsiEncoding: Нажмите здесь
--------------------- Редактировать 18 ноября 2009
После некоторого расследования я теперь уверен, что это проблема кодирования, это можно решить, определив мою собственную кодировку, используя полезный класс PDFBox под названием DictionaryEncoding.
Я не уверен, как его использовать, но вот что я пробовал до сих пор:
COSDictionary cosDic = new COSDictionary();
cosDic.setString( COSName.getPDFName("Ercyrillic"), "0420 " ); // Russian letter.
font.setEncoding( new DictionaryEncoding( cosDic ) );
Это не работает, поскольку, кажется, я неправильно заполняю словарь, когда я пишу PDF-страницу, используя это, он выглядит пустым.
Исходный код DictionaryEncoding: Нажмите здесь