欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

java使用itext合并pdf文件,javaitext合并pdf,使用itext合并pdf

来源: javaer 分享于  点击 23853 次 点评:175

java使用itext合并pdf文件,javaitext合并pdf,使用itext合并pdf


使用itext合并pdf文件很简单,首先需要创建要合并pdf文件的InputStream对象,然后调用MergePDF.concatPDF()静态方法。

在contactPDF()方法中将输入的Pdf文件流转换成一系列的PdfWriter对象,并记录每一个输入流对应pdf文件的总页数。

然后创建一个BaseFont对象,这个对象用来写页码。然后创建一个Output对象来写要合并的pdf。最后关闭所有的流

package cn.outofmemory.itext.pdf;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import com.lowagie.text.Document;import com.lowagie.text.pdf.BaseFont;import com.lowagie.text.pdf.PdfContentByte;import com.lowagie.text.pdf.PdfImportedPage;import com.lowagie.text.pdf.PdfReader;import com.lowagie.text.pdf.PdfWriter;public class MergePDF {    public static void main(String[] args) {        try {            List<InputStream> pdfs = new ArrayList<InputStream>();            pdfs.add(new FileInputStream("c:\\1.pdf"));            pdfs.add(new FileInputStream("c:\\2.pdf"));            OutputStream output = new FileOutputStream("c:\\merge.pdf");            MergePDF.concatPDFs(pdfs, output, true);        } catch (Exception e) {            e.printStackTrace();        }    }    public static void concatPDFs(List<InputStream> streamOfPDFFiles,            OutputStream outputStream, boolean paginate) {        Document document = new Document();        try {            List<InputStream> pdfs = streamOfPDFFiles;            List<PdfReader> readers = new ArrayList<PdfReader>();            int totalPages = 0;            Iterator<InputStream> iteratorPDFs = pdfs.iterator();            // Create Readers for the pdfs.            while (iteratorPDFs.hasNext()) {                InputStream pdf = iteratorPDFs.next();                PdfReader pdfReader = new PdfReader(pdf);                readers.add(pdfReader);                totalPages += pdfReader.getNumberOfPages();            }            // Create a writer for the outputstream            PdfWriter writer = PdfWriter.getInstance(document, outputStream);            document.open();            BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA,                    BaseFont.CP1252, BaseFont.NOT_EMBEDDED);            PdfContentByte cb = writer.getDirectContent(); // Holds the PDF            // data            PdfImportedPage page;            int currentPageNumber = 0;            int pageOfCurrentReaderPDF = 0;            Iterator<PdfReader> iteratorPDFReader = readers.iterator();            // Loop through the PDF files and add to the output.            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, ""                                + currentPageNumber + " of " + totalPages, 520,                                5, 0);                        cb.endText();                    }                }                pageOfCurrentReaderPDF = 0;            }            outputStream.flush();            document.close();            outputStream.close();        } catch (Exception e) {            e.printStackTrace();        } finally {            if (document.isOpen())                document.close();            try {                if (outputStream != null)                    outputStream.close();            } catch (IOException ioe) {                ioe.printStackTrace();            }        }    }}
相关栏目:

用户点评