2013-04-13 2 views
0

Есть ли способ позиционировать абзац абсолютно так, который также работает, когда список добавляется в абзац?Исход: Показать абзац в абсолютном положении

Поиск в Google показывает, что я должен использовать ColumnText, но я не могу заставить это работать, если в абзаце есть список. Он просто показывает элементы списка рядом друг с другом в одном и том же линейке. Вот моя тестовая программа:

 PdfWriter writer=PdfWriter.getInstance(document,new FileOutputStream("/tmp/output.pdf")); 
     document.open(); 
     ColumnText ct = new ColumnText(writer.getDirectContent()); 
     ct.setSimpleColumn(0,0,300,300); 
     Paragraph p=new Paragraph(); 
     List list=new List(); 
     list.add(new ListItem("First item")); 
     list.add(new ListItem("second item")); 
     list.add(new ListItem("third item")); 
     p.add(list); 
     ct.addElement(p); 
     ct.go(); 
     document.close(); 
     writer.close(); 

ответ

1

Я посмотрел в IText из списком изменений, и я обнаружил, что это было зафиксировано в IText 5.2.1, выпущенный 31 марта 2012. Это больше года назад. Обновите версию до последней версии, и проблема исчезнет.

Обратите внимание, что все версии 5.2.x были удалены из SourceForge, поскольку они содержали ошибку, которая иногда создавала PDF-файлы, которые не соответствовали ISO-32000-1. Основываясь на описании вашей проблемы, я знаю, что вы используете версию iText, которая даже старше, чем серия 5.2.x, поэтому вам обязательно нужно обновить.

+0

Извините, я не могу. В настоящее время у нас нет 1,615 €, необходимых для серверной лицензии - ( – MTilsted

+0

Вы будете прибыльными в будущем? Если это так, продайте почту в iText и попросите Гарри. Обратитесь к этому сообщению, и он может сделать вам запуск по рукам. –

1

Другой способ организовать ваше содержание в файле PDF - это то, что вы можете использовать PdfPTable. сначала напишите содержимое списка в таблицу с помощью инструкции цикла, а затем определите позицию этого PdfPTable в вашем выходном файле pdf.

0

Вы можете использовать эту функцию:

private void PlaceChunck(String text, int x, int y) { 
    PdfContentByte cb = writer.DirectContent; 
    BaseFont bf = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED); 
    cb.SaveState(); 
    cb.BeginText(); 
    cb.MoveText(x, y); 
    cb.SetFontAndSize(bf, 12); 
    cb.ShowText(text); 
    cb.EndText(); 
    cb.RestoreState(); 
} 

смотрите также: itext positioning text absolutely;

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