生成pdf文字和表格
先看效果
介绍
java项目,使用apache的pdfbox工具,可分页,自定义列
依赖
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.22</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>fontbox</artifactId>
<version>2.0.22</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>xmpbox</artifactId>
<version>2.0.22</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>preflight</artifactId>
<version>2.0.22</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox-tools</artifactId>
<version>2.0.22</version>
</dependency>
基本使用的api
创建一个页面
String filePath = "D:\\imgTest\\test.pdf";
PDDocument document = new PDDocument();
PDPage page = new PDPage();
document.addPage(page);
document.save(new File(filePath));
执行后就可以在 D:\imgTest 目录下看到test.pdf 打开后有一个空白页
写入文字
PDDocument document = new PDDocument();
PDFont font = PDType0Font.load(document,new File("D://imgtest/font/simfang.ttf"));
PDPage page = new PDPage();
PDPageContentStream contentStream = new PDPageContentStream(document, page);
contentStream.beginText();
contentStream.setFont(font,20.0f);
contentStream.showText("写入文字");
contentStream.endText();
contentStream.close();
document.addPage(page);
document.save(new File(filePath));
但是可以看到文字在最后显示
文字从顶部写入
计算出page高度 文字高度 然后就得到了书写的位置
contentStream.newLineAtOffset(0,pageHeight - fontHeight);
PDDocument document = new PDDocument();
PDFont font = PDType0Font.load(document,new File("D://imgtest/font/simfang.ttf"));