package com.zbooksoft.gdmis.common; import com.itextpdf.kernel.font.PdfFontFactory; import com.itextpdf.kernel.pdf.PdfDocument; import com.itextpdf.kernel.pdf.PdfPage; import com.itextpdf.kernel.pdf.PdfReader; import com.itextpdf.kernel.pdf.PdfWriter; import com.itextpdf.kernel.pdf.canvas.PdfCanvas; import org.apache.poi.xwpf.usermodel.ParagraphAlignment; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFParagraph; import org.apache.poi.xwpf.usermodel.XWPFRun; import java.io.FileOutputStream; import java.io.IOException; /** * @Description: * @Author: zhai * @Date: 2025/9/29 **/ public class PdfUtil { public static void addBlankPageAtBeginning(String sourcePath, String targetPath, String name) throws IOException { // 读取源PDF文档 PdfReader reader = new PdfReader(sourcePath); PdfWriter writer = new PdfWriter(targetPath); PdfDocument pdfDoc = new PdfDocument(reader, writer); try { // 创建新的空白页并插入到第一页前 PdfPage newPage = pdfDoc.addNewPage(1); // 在新页面上添加内容 PdfCanvas canvas = new PdfCanvas(newPage); // 设置字体和大小,并移动到指定位置 canvas.beginText() .setFontAndSize(PdfFontFactory.createFont("STSong-Light", "UniGB-UCS2-H"), 14) .moveText(100, 700) // 调整起始Y坐标使内容更靠近页面顶部 .showText("资料名称:" + name) .moveText(0, -20) // 每次向下移动一定距离以换行 .showText("接收时间:2025-11-04") .moveText(0, -20) .showText("移交纸质资料时请移交此版本数据") .endText(); pdfDoc.close(); reader.close(); } catch (Exception e) { e.printStackTrace(); } finally { pdfDoc.close(); reader.close(); } } public static void addFirstPageToWord(String sourcePath, String outputPath) { try { XWPFDocument document = new XWPFDocument(); // 添加首页内容 addCoverPageContent(document); // 保存文档 FileOutputStream out = new FileOutputStream(outputPath); document.write(out); out.close(); document.close(); } catch (Exception e) { e.printStackTrace(); } } private static void addCoverPageContent(XWPFDocument document) { // 标题 XWPFParagraph title = document.createParagraph(); title.setAlignment(ParagraphAlignment.CENTER); XWPFRun titleRun = title.createRun(); titleRun.setText("请打印移交此版本数据"); titleRun.setBold(true); titleRun.setFontSize(28); // 空行 document.createParagraph(); } }