Apache PDFBox Java库-是否有用于创建表的API?

Apache PDFBox Java库-是否有用于创建表的API?,第1张

Apache PDFBox Java库-是否有用于创建表的API?

来源 :使用PDFBox创建表

以下方法绘制具有指定表内容的表。这有点骇人听闻,并且适用于小的文本字符串。它不执行自动换行,但是您可以了解它是如何完成的。搏一搏!

public static void drawTable(PDPage page, PDPageContentStream contentStream,       float y, float margin,       String[][] content) throws IOException {    final int rows = content.length;    final int cols = content[0].length;    final float rowHeight = 20f;    final float tableWidth = page.findMediaBox().getWidth() - margin - margin;    final float tableHeight = rowHeight * rows;    final float colWidth = tableWidth/(float)cols;    final float cellMargin=5f;    //draw the rows    float nexty = y ;    for (int i = 0; i <= rows; i++) {        contentStream.drawLine(margin, nexty, margin+tableWidth, nexty);        nexty-= rowHeight;    }    //draw the columns    float nextx = margin;    for (int i = 0; i <= cols; i++) {        contentStream.drawLine(nextx, y, nextx, y-tableHeight);        nextx += colWidth;    }    //now add the text contentStream.setFont( PDType1Font.HELVETICA_BOLD , 12 );    float textx = margin+cellMargin;    float texty = y-15; for(int i = 0; i < content.length; i++){        for(int j = 0 ; j < content[i].length; j++){ String text = content[i][j]; contentStream.beginText(); contentStream.moveTextPositionByAmount(textx,texty); contentStream.drawString(text); contentStream.endText(); textx += colWidth;        }        texty-=rowHeight;        textx = margin+cellMargin;    }}

用法:

PDdocument doc = new PDdocument();PDPage page = new PDPage();doc.addPage( page );PDPageContentStream contentStream = new PDPageContentStream(doc, page);String[][] content = {{"a","b", "1"}, {"c","d", "2"}, {"e","f", "3"}, {"g","h", "4"}, {"i","j", "5"}} ;drawTable(page, contentStream, 700, 100, content);contentStream.close();doc.save("test.pdf" );


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5017011.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存