From 57a6735173d59feb6cfd95c9a8ec76d6f87bc578 Mon Sep 17 00:00:00 2001 From: liusheng <337615773@qq.com> Date: 星期一, 22 四月 2024 12:46:28 +0800 Subject: [PATCH] PDF合并,BUG修改 --- ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/PdfMergeController.java | 12 +++++++++--- ruoyi-common/src/main/java/com/ruoyi/common/utils/MergeFilesToPDFUtils.java | 38 ++++++++++++++++++++------------------ 2 files changed, 29 insertions(+), 21 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/PdfMergeController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/PdfMergeController.java index f180dff..9f98860 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/PdfMergeController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/PdfMergeController.java @@ -1,5 +1,6 @@ package com.ruoyi.web.controller.project; +import com.itextpdf.text.DocumentException; import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.utils.MergeFilesToPDFUtils; @@ -101,9 +102,14 @@ ServiceDonatebaseinfo donatebaseinfo = donatebaseinfoService.getById(serviceDonateannexes.get(0).getInfoid()); String fileName = donatebaseinfo.getIdcardno() + donatebaseinfo.getName() + ".pdf"; - String[] str = list.toArray(new String[0]); - //鏂囦欢鍚堝苟 - mergeFilesToPDFUtils.mergePDF(str, fileName, response); + try { + //鏂囦欢鍚堝苟 + mergeFilesToPDFUtils.mergePdfFiles(list, fileName); + } catch (IOException e) { + e.printStackTrace(); + } catch (DocumentException e) { + e.printStackTrace(); + } //鍒犻櫎涓存椂鏂囦欢 for (MegerIsRemove megerIsRemove : megerIsRemoveList) { if (megerIsRemove.getIsdel()) { diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/MergeFilesToPDFUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/MergeFilesToPDFUtils.java index fd68236..ac164ca 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/MergeFilesToPDFUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/MergeFilesToPDFUtils.java @@ -1,12 +1,14 @@ package com.ruoyi.common.utils; +import com.itextpdf.text.DocumentException; import com.itextpdf.text.Image; -import com.itextpdf.text.pdf.PdfWriter; +import com.itextpdf.text.pdf.*; import com.ruoyi.common.utils.file.FileUtils; import com.spire.doc.Document; import com.spire.doc.FileFormat; import com.spire.pdf.PdfDocument; import com.spire.pdf.PdfDocumentBase; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; import org.springframework.http.MediaType; @@ -17,8 +19,10 @@ import java.io.File; import java.io.FileOutputStream; import java.io.IOException; +import java.util.List; @Configuration +@Slf4j public class MergeFilesToPDFUtils { @Value("${ruoyi.archived}") @@ -80,27 +84,25 @@ return true; } - /** + /** * pdf鍚堝苟 */ - public Boolean mergePDF(String[] pdfFiles, String fileName, HttpServletResponse response) { - try { + public void mergePdfFiles(List<String> pdfFiles, String fileName) throws IOException, DocumentException { + com.itextpdf.text.Document document = new com.itextpdf.text.Document(); + log.info("fileName鐨勫叏璺緞锛歿}", archived + "/" + fileName); + PdfCopy copy = new PdfCopy(document, new FileOutputStream(archived + "/" + fileName)); + document.open(); - - PdfDocumentBase pdf = PdfDocument.mergeFiles(pdfFiles); - //Save the result to a PDF file - - pdf.save(archived + fileName, com.spire.pdf.FileFormat.PDF); - String filePath = archived + fileName; - - response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); - FileUtils.setAttachmentResponseHeader(response, fileName); - FileUtils.writeBytes(filePath, response.getOutputStream()); - } catch (Exception e) { - e.printStackTrace(); - return false; + for (String pdfFile : pdfFiles) { + PdfReader reader = new PdfReader(pdfFile); + int totalPages = reader.getNumberOfPages(); + for (int page = 1; page <= totalPages; page++) { + PdfImportedPage importedPage = copy.getImportedPage(reader, page); + copy.addPage(importedPage); + } + reader.close(); } - return true; + document.close(); } } -- Gitblit v1.9.3