由于iText存在许可问题,我们计划将PDF生成工具从iText迁移到PDFBox。通过一些努力,我能够编写和定位文本、绘制线条等等。但是创建包含文本的表格是一个挑战,我查阅了文档、示例、Google、Stackoverflow等等,却什么都找不到。 想知道PDFBox是否提供原生支持创建包含嵌入式文本的表格。 最后的办法就是使用这个链接https://github.com/eduardohl/Paginated-PDFBox-Table-Sample
由于iText存在许可问题,我们计划将PDF生成工具从iText迁移到PDFBox。通过一些努力,我能够编写和定位文本、绘制线条等等。但是创建包含文本的表格是一个挑战,我查阅了文档、示例、Google、Stackoverflow等等,却什么都找不到。 想知道PDFBox是否提供原生支持创建包含嵌入式文本的表格。 最后的办法就是使用这个链接https://github.com/eduardohl/Paginated-PDFBox-Table-Sample
AWTColor
? - cklab感谢Tilman提供的链接。使用boxable API (https://github.com/dhorions/boxable),我成功创建了需要的表格。需要注意的是,我想创建一个变量单元格数的表格,比如第一行有2个单元格,第二行有5个单元格,第三行只有3个单元格,但我轻松地完成了。我遵循了上述链接中的Example1.java示例代码。
这个示例代码对我来说是可行的。我认为这对你会有所帮助。
public static void creteTablePdf() throws IOException {
PDDocument document = new PDDocument();
PDPage page = new PDPage();
document.addPage(page);
int pageWidth = (int)page.getTrimBox().getWidth(); //get width of the page
int pageHeight = (int)page.getTrimBox().getHeight(); //get height of the page
PDPageContentStream contentStream = new PDPageContentStream(document,page);
contentStream.setStrokingColor(Color.DARK_GRAY);
contentStream.setLineWidth(1);
int initX = 50;
int initY = pageHeight-50;
int cellHeight = 20;
int cellWidth = 100;
int colCount = 3;
int rowCount = 3;
for(int i = 1; i<=rowCount;i++){
for(int j = 1; j<=colCount;j++){
if(j == 2){
contentStream.addRect(initX,initY,cellWidth+30,-cellHeight);
contentStream.beginText();
contentStream.newLineAtOffset(initX+30,initY-cellHeight+10);
contentStream.setFont(PDType1Font.TIMES_ROMAN,10);
contentStream.showText("Dinuka");
contentStream.endText();
initX+=cellWidth+30;
}else{
contentStream.addRect(initX,initY,cellWidth,-cellHeight);
contentStream.beginText();
contentStream.newLineAtOffset(initX+10,initY-cellHeight+10);
contentStream.setFont(PDType1Font.TIMES_ROMAN,10);
contentStream.showText("Dinuka");
contentStream.endText();
initX+=cellWidth;
}
}
initX = 50;
initY -=cellHeight;
}
contentStream.stroke();
contentStream.close();
document.save("C:\\table.pdf");
document.close();
System.out.println("table pdf created");
}