2013-04-13 66 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;