2015-08-25 3 views
0

Я создаю таблицу, используя iText.
Но результат выглядит очень плохо из-за переносов, который, кажется, не выполняется должным образом.
Я Allready прочитал этот вопрос How to hyphenate text?
и этот пример http://itextpdf.com/sandbox/tables/HyphenationExample
я попробовал пример в упадке после того как я добавил itext_hyph_xml.jar к моему классу пути. Ошибка не генерируется, когда я запускаю код, но линии
Рассылка Itext в ячейках таблицы

Hyphenator h = new Hyphenator("de", "DE", 2, 2); 
Hyphenation s = h.hyphenate("Leistungsscheinziffer"); 
System.out.println(s); 

печати нуль на консоли вместо «Лей-stungs-Шайна-ZIF-фер» или что-то подобное, как я ожидал.
Я пытался играть с параметрами в

chunk.setHyphenation(new HyphenationAuto("de", "DE", 2,2)); 

но выход в документе никогда не differes даже чуть-чуть.

Код я пытаюсь добраться до работы выглядит вроде как это, кстати:

for(String s: interest){ 
     Chunk chunk = new Chunk(s,FONT[0]); 
     chunk.setHyphenation(new HyphenationAuto("de", "DE", 2,3)); 
     table.addCell(new Phrase(chunk)); 

}

+0

Я только заметил, что когда я обновил iText, не было отправлено новое itext_html_xml.jar. У XmlWorker были проблемы с более старыми версиями itext. Могла ли это быть проблемой и с гипнозом? – moli

ответ

0

Хорошо, я понял это, на мой собственный прямо сейчас.
И поскольку я не мог найти ответ в Интернете, я подумал, что поделюсь им здесь, чтобы любой, кто мог бы иметь такую ​​же ошибку в будущем, не понадобился бы недели, чтобы понять это.

кажется, что в классе Hyphenator defaultHyphLocation устанавливается следующим образом:

private static final String defaultHyphLocation = "com/itextpdf/text/pdf/hyphenation/hyph/"; 

Но структура itext_hyph.jar выглядит следующим образом:
com.lowagie.text.pdf.hyphenation.hyph
Очевидно загрузки файла Hyph из банки будут конечно, не удастся, так как путь, используемый Hyphenator, не найден. Я на самом деле думал, что это приведет к ошибке, но кажется, что null возвращается при сбое загрузки файла hyph.
Вызов Hyphenator.setHyphenDir("com/lowagie/text/pdf/hyphenation/hyph/");
однако не изменит ничего, как можно было бы подумать, поскольку он изменяет неправильную строковую переменную.
Единственное, что я мог придумать для решения этой проблемы, было воссоздать itext_hyph.jar по пути, указанному в Hyphenator, и это фактически зафиксировало его. В настоящее время работает перенос переносов.

+1

Вы уверены, что используете правильный файл hyph.jar? Когда я проверяю файлы из Maven Central (http://mvnrepository.com/artifact/com.itxtpdf/itext-hyph-xml), я обнаружил, что оба доступных баночки имеют путь к com.itextpdf ... – blagae