2013-04-13 74 views
0

是否有一種方法可以絕對定位一個段落,也可以在將列表添加到段落時使用?Itext:在絕對位置顯示段落

谷歌搜索顯示我應該使用ColumnText,但是如果段落中有一個列表,我無法使它工作。它只是在相同的linie上顯示彼此相鄰的列表項。這裏是我的測試程序:

 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,於3月31日,2012年那是在一年前發佈的。請升級到最新版本,問題將消失。

請注意,所有5.2.x版本都從SourceForge中刪除,因爲它們包含偶爾生成不符合ISO-32000-1的PDF的錯誤。根據你的問題描述,我知道你使用的是比5.2.x系列更早的iText版本,所以你肯定需要升級。

+0

對不起,我不能。我們目前沒有服務器許可所需的1.615歐元 - ( – MTilsted

+0

你將來會盈利嗎?如果是這樣,在iText郵購併要求加里。參考這篇文章,他可以讓你成爲初創公司應對。 –

1

在PDF文件中組織您的內容的另一種方法是您可以使用PdfPTable。首先使用循環指令將列表內容寫入表中,然後在輸出的pdf文件中定義該PdfPTable的位置。

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;