2013-11-21 3 views
4

Я создаю PDF-файл с iText в Java. Мои столбцы таблицы имеют фиксированную ширину и текст, который слишком длинный для одной строки, завернут в ячейку. Но перенос не используется. Слово "Leistungsscheinziffer" показано, как: Leistungssc // Перерыв здесь heinzifferКак переносить текст?

Мой код, где я использую переносов:

final PdfPTable table = new PdfPTable(sumCols); 
table.getDefaultCell().setBorder(Rectangle.NO_BORDER); 
table.getDefaultCell().setPadding(4f); 
table.setWidths(widthsCols); 
table.setWidthPercentage(100); 
table.setSpacingBefore(0); 
table.setSpacingAfter(5); 

final Phrase result = new Phrase(text, font); 
result.setHyphenation(new HyphenationAuto("de", "DE", 2,2)); 
final PdfPCell cell = new PdfPCell(table.getDefaultCell()); 
cell.setPhrase(result); 
table.addCell(cell); 
... 

дефис активируется и следующие результаты испытаний «Лей-stungs-schein- ЗИФ-фер "

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

что я забыл установить на стол, что дефис работает там? Спасибо за помощь. Если вам нужна дополнительная информация о моем коде, я расскажу вам.

ответ

4

Первое замечание, которое не имеет отношения к проблеме: вы создаете объект PdfPCell, но вы его не используете. Вы добавляете фразу в таблицу вместо использования объекта cell.

Теперь ваш вопрос: как правило, переносы устанавливается на Chunk уровне:

Chunk chunk = new Chunk("Leistungsscheinziffer"); 
chunk.setHyphenation(new HyphenationAuto("de", "DE", 2,2)); 
table.addCell(new Phrase(chunk)); 

Если вы хотите установить переносы на Phrase уровне, вы можете сделать это, но это будет работать только для всех последующих Chunk s, которые добавляются. Он не будет работать для содержимого, которое уже хранится внутри Phrase. Другими словами: вам нужно создать пустой Phrase объект, а затем добавить один или несколько Chunk объектов:

Phrase phrase = new Phrase(); 
phrase.setHyphenation(new HyphenationAuto("de", "DE", 2,2)); 
phrase.add(new Chunk("Leistungsscheinziffer")); 

я сделал пример на основе кода (HyphenationExample); слово «Leistungsscheinziffer» переносится в полученный PDF: hyphenation_table.pdf.

+0

Это была ошибка ввода ;-) Я использую ячейку. Большое спасибо за Вашу помощь. Я думал, что будет легко решить мою проблему: -D – user3017202

+0

@Bruno Я пытаюсь использовать ваш пример, но это не заглочивает слово ... вот что я, пожалуйста, возьму секунду и попробую (им полностью застрял здесь) https://www.dropbox.com/s/wu259ggbebb739f/itext.7z?dl=0 – vach

+0

@vach Добавили ли вы перенос переносов в свой CLASSPATH? Вы можете найти эту банку [здесь] (http://sourceforge.net/projects/itext/files/extrajars/extrajars-2.3.zip/download). –