2017-03-06 73 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