2017-03-06 66 views
1

我想添加一些“多行和列”的单元格到表,但得到
IndexOutOfBoundsException。错误与itext7

任何帮助将不胜感激。

谢谢!

public static void main(String[] args) throws FileNotFoundException { 
    PdfWriter writer = new PdfWriter("D:\\test.pdf"); 
    PdfDocument pdf = new PdfDocument(writer); 
    Document document = new Document(pdf); 
    Table table = new Table(10); 
    table.setWidthPercent(100); 
    table.addCell(new Cell(1, 3).add(new Paragraph(1 + "_" + 3 + "_"))); 
    table.addCell(new Cell(1, 7).add(new Paragraph(1 + "_" + 4 + "_"))); 
    table.addCell(new Cell(6, 1).add(new Paragraph(6 + "_" + 1 + "_"))); 
    table.addCell(new Cell(6, 9).add(new Paragraph(6 + "_" + 9 + "_"))); 
    table.flushContent(); 
    document.add(table); 
    document.close(); 
} 

异常

java.lang.IndexOutOfBoundsException: Index: 2, Size: 2 
at java.util.ArrayList.rangeCheck(ArrayList.java:653) 
at java.util.ArrayList.get(ArrayList.java:429) 
at com.itextpdf.layout.renderer.TableRenderer.drawVerticalBorder(TableRenderer.java:1718) 
at com.itextpdf.layout.renderer.TableRenderer.drawBorders(TableRenderer.java:1619)  
at com.itextpdf.layout.renderer.TableRenderer.drawChildren(TableRenderer.java:1265) 
at com.itextpdf.layout.renderer.AbstractRenderer.draw(AbstractRenderer.java:437) 
at com.itextpdf.layout.renderer.TableRenderer.draw(TableRenderer.java:1175) 
at com.itextpdf.layout.renderer.DocumentRenderer.flushSingleRenderer(DocumentRenderer.java:118) 
at com.itextpdf.layout.renderer.RootRenderer.processRenderer(RootRenderer.java:287) 
at com.itextpdf.layout.renderer.RootRenderer.updateCurrentAreaAndProcessRenderer(RootRenderer.java:300) 
at com.itextpdf.layout.renderer.RootRenderer.addChild(RootRenderer.java:201) 
at com.itextpdf.layout.RootElement.add(RootElement.java:108) 
at com.itextpdf.layout.Document.add(Document.java:143) 
+0

显示您的完整代码,请 –

+0

我已经编辑你到底使用哪个版本的iText 7的问题 – Starwhere

+0

?第一个版本中存在与表格边框相关的错误,然后表格代码已被彻底修改。 – mkl

回答

1

该错误已被固定在7.0.3-SNAPSHOT。修复的快照可以从Artifactory下载。

得到的文件现在看起来是这样的:enter image description here