合并pdf,

來源:互聯網
上載者:User

合并pdf,

合并pdf
    pom.xml添加Jar依賴
        <!-- pdf處理jar依賴 start -->
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.5.12</version>
        </dependency>
        <!-- pdf處理jar依賴 end -->

        <!-- pdf處理jar包依賴 start -->
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itext-asian</artifactId>
            <version>5.2.0</version>
        </dependency>
        <dependency>
            <groupId>com.lowagie</groupId>
            <artifactId>itext</artifactId>
            <version>4.2.1</version>
        </dependency>
        <!-- pdf處理jar包依賴 end -->    


package com.bjpowernode.p2p.admin.pdf;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import com.itextpdf.text.Document;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfImportedPage;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfWriter;

/**
 * PDF檔案合併作業
 *
 * @author ldd
 *
 */
public class PDFMergeUtil {
    
    /**Log4j2日誌記錄器*/
    private static final Logger logger = LogManager.getLogger(PDFMergeUtil.class);
    
    /**
     * PDF檔案合併作業
     *
     * @param streamOfPDFFiles
     * @param outputStream
     * @param paginate
     */
    public static void mergePDFs(List<String> inputFileList, String outputFile, boolean paginate) {
        
        logger.info("pdf檔案合并......");
        //建立新的pdf文檔
        Document document = new Document();
        
        PdfWriter writer = null;
        FileInputStream fis = null;
        FileOutputStream fos = null;
        
        try {
            //建立讀取Pdf 檔案對象
            List<PdfReader> readers = new ArrayList<PdfReader>();
            
            for (String filePath : inputFileList) {
                fis = new FileInputStream(filePath);
                
                PdfReader pdfReader = new PdfReader(fis);
                readers.add(pdfReader);
            }
            //讀取pdf檔案
            fos = new FileOutputStream(outputFile);
            //產生新的文檔
            writer = PdfWriter.getInstance(document, fos);
            //開啟文檔
            document.open();
            //設定字型
            BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
            PdfContentByte cb = writer.getDirectContent();

            PdfImportedPage page = null;
            int currentPageNumber = 0;
            int pageOfCurrentReaderPDF = 0;
            
            Iterator<PdfReader> iteratorPDFReader = readers.iterator();
            //依次讀取pdf
            while (iteratorPDFReader.hasNext()) {
                
                PdfReader pdfReader = iteratorPDFReader.next();
                
                // Create a new page in the target for each source page.
                while (pageOfCurrentReaderPDF < pdfReader.getNumberOfPages()) {
                    document.newPage();
                    pageOfCurrentReaderPDF++;
                    currentPageNumber++; //建立當前頁碼
                    page = writer.getImportedPage(pdfReader, pageOfCurrentReaderPDF);
                    cb.addTemplate(page, 0, 0);
                    
                    // Code for pagination.
                    if (paginate) {
                        cb.beginText();
                        cb.setFontAndSize(bf, 9);//字型
                        cb.showTextAligned(PdfContentByte.ALIGN_CENTER, String.valueOf(currentPageNumber), 290, 50, 0);
                        cb.endText();
                    }
                }
                pageOfCurrentReaderPDF = 0;
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (document.isOpen()) {
                    document.close();
                }
                if (null != fis) {
                    fis.close();
                }
                if (null != fos) {
                    fos.close();
                }
                if (null != writer) {
                    writer.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 檔案合并測試
     *
     * @param args
     * @throws Throwable
     */
    public static void main(String[] args) throws Throwable {
        List<String> inputFileList = new ArrayList<String>();
        inputFileList.add("C:\\dev\\eclipse\\workspace\\p2p-admin\\src\\main\\resources\\sb_loan_contract_borrow.pdf");
        inputFileList.add("C:\\dev\\eclipse\\workspace\\p2p-admin\\src\\main\\resources\\sb_loan_contract_borrow.pdf");
        String outputFile = "C:\\dev\\eclipse\\workspace\\p2p-admin\\src\\main\\resources\\sb_loan_contract_borrow_merge.pdf";
        //合并PDF
        PDFMergeUtil.mergePDFs(inputFileList, outputFile, true);
    }
}





-------------------------------------------華麗的分割線----------------------------------------------------------
            List<String> pdfList = new ArrayList<String>();
            pdfList.add(outPutFileName);//公司簽章pdf
            pdfList.add(outFile_table);//表格pdf
            
            //pdf檔案合并
            PDFMergeUtil.mergePDFs(pdfList, outFile_final, true);
            
            






聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.