头图

用到的主要是itext依赖

<dependency>
 <groupId>com.itextpdf</groupId>
 <artifactId>itext-asian</artifactId>
 <version>5.2.0</version>
</dependency>

<dependency>
 <groupId>com.itextpdf</groupId>
 <artifactId>itextpdf</artifactId>
 <version>5.5.10</version>
</dependency>

<dependency>
 <groupId>com.itextpdf</groupId>
 <artifactId>kernel</artifactId>
 <version>7.1.8</version>
</dependency>

<dependency>
 <groupId>com.itextpdf</groupId>
 <artifactId>layout</artifactId>
 <version>7.1.2</version>
</dependency>

代码


try {
 PdfReader reader = null;
 readr = new PdfReader("模版路径"); 
 
 PdfWriter writer = new PdfWriter("模板输出路径");
 PdfDocument pdfDoc = new PdfDocument(reader, writer);
 Document document = new Document(pdfDoc);
 
 //插入中文必须用到字体格式
 PdfFont f2 = PdfFontFactory.createFont(字体);
 document.add(new Paragraph(插入的数据).setFontSize(“字体大小”).setFont(字体格式).setFixedPosition(位置));
 document.close();
 writer.close();
 reader.close();
}catch (Exception e ){
    e.printStackTrace();
}

后面用到了将PDF转化为Png的代码

如下

public static void pdf2png(String fileAddress, String filename, String type) {
    // 将pdf装图片 并且自定义图片得格式大小
 File file = new File(fileAddress + "/" + filename + ".pdf");
 try {
        PDDocument doc = PDDocument.load(file);
 PDFRenderer renderer = new PDFRenderer(doc);
 int pageCount = doc.getNumberOfPages();
 for (int i = 0; i < pageCount; i++) {
            BufferedImage image = renderer.renderImageWithDPI(i, 144); // Windows native DPI
 // BufferedImage srcImage = resize(image, 240, 240);//产生缩略图 ImageIO.write(image, type, new File(fileAddress + "/"+ filename + "." + type));
 }
    } catch (IOException e) {
        e.printStackTrace();
 }
}

基本上就可以完成非表单的PDF数据插入


Ahnappi
4 声望0 粉丝