2015-04-21 2 views
1

Я столкнулся с той же проблемой, что описал here, то есть для вывода знака € в моем созданном документе PDF. Знак евро должен быть добавлен после того, как данные извлекаются из базы данных, в данном случае решение при условии не очень полезно, я пытался с этой линией, так что я могу использовать переменную euroToPDF в любом месте я хочу:Выходной знак евро с использованием PDFBox

Encoding e = EncodingManager.INSTANCE.getEncoding(COSName.WIN_ANSI_ENCODING); 

String euroToPDF = String.valueOf(Character.toChars(e.getCode(e.getCharacter(128)))); 

но приложение бросает IOException, говоря No character code for character name '€', кто-нибудь знает, как это решить?

+0

возможно дубликат [PdfBox закодировать символ валюты евро] (http://stackoverflow.com/questions/22260344/pdfbox-encode-symbol-currency -euro) – mkl

+0

@mkl, если вы внимательно прочитали мое сообщение, я ссылался на этот пост и сказал, что он не решил мое дело. – Blake

+1

Если вы внимательно прочитали эту статью и изучили связанные источники, вы заметили, что канонический способ адресовать проблему заключается в том, чтобы запрограммировать замену для «PDPageContentStream.drawString (String)», а не пытаться подавать ее по-другому. (По общему признанию, я назвал его дубликатом после того, как увидел ответ Алекса, который по существу дублирует этот пост.) – mkl

ответ

1

Если вы используете v2 PDFBox, вы должны использовать символ € в строке, которую вы выводите, не пытаясь преобразовать кодировку.

В v1.8 вы можете использовать трюк:

contentStream.beginText(); 
contentStream.setTextMatrix(100, 0, 0, 100, 50, 100); 
contentStream.setFont(PDType1Font.HELVETICA, 8); 
byte[] commands = "(x) Tj ".getBytes(); 
commands[1] = (byte) 128; 
contentStream.appendRawCommands(commands); 
contentStream.endText(); 
contentStream.close(); 
Смежные вопросы