java使用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 outputstreamPdfWriter 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// dataPdfImportedPage 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();}}}
}

itext合并两个PDF流相关推荐

  1. iText 合并多个 pdf 文件

    iText 合并多个 pdf 文件 iText 合并多个 pdf 文件 核心代码 完整的类代码 参考代码 参考来源 iText 合并多个 pdf 文件 核心代码 /*** 合并多个pdf** @par ...

  2. Java 使用iText7生成带页码的PDF文件(同时生成目录,但是不会合并两个PDF)

    一.效果图 1.带页码效果 2.目录效果 前言:Java 使用iText7生成带页码的PDF文件,同时生成目录PDF,但限于水平,暂时还在摸索合并两个PDF.不过看了一下,iText好像有生成目录的代 ...

  3. 合并两个xml文件 php_怎样合并两个pdf文件

    Pdf文件我们常常在办公中用到,有很多朋友在网上手机资料后不知道怎么把它加入到pdf文件中,有些朋友可能会想到复制粘贴,可是pdf文件是不能够直接进行编辑的,那么应该怎么才能把pdf文件合并在一起呢? ...

  4. java 使用itext合并多个pdf文件成一个pdf

    maven <!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf --><dependency><g ...

  5. itext合并A4的pdf为A3版式

    试卷生成A3板式, 源文件为A4 使用itext实现 maven坐标 <!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf ...

  6. 图片合并成PDF,两个PDF的合并

    需求: 将多张手机照片合并成一个PDF,并于另一个成型PDF合并 过程: 使用全能扫描王处理一遍,拆剪掉多余部分,并提高亮度增加文字对比度 合并: 使用Faststone Capture合并图片即可. ...

  7. 两个pdf合并成一个pdf,pdf合并教程

    说起合并两个PDF文件,我们通常就会形成一个思维定式,感觉直接把一个pdf文件内容复制到另一个PDF文件,不就合并完成了吗?其实这样的方法应用在PDF文件的身上是不成立的,复制粘贴只能用于那些可以自由 ...

  8. 两个pdf文档怎么合并在一起

    两个pdf文档怎么合并在一起? 无论我们使用什么样的文件格式,如果所接触到的文件特别多的话,都要考虑将文件合并之后继续使用,这样有助于我们保存和传输.通常来讲我们在合并文件的时候,直接利用复制粘贴的方 ...

  9. mac怎么合并两个容器_PDF怎样合并?在Mac上合并PDF文件的最佳方法

    在保存编辑内容的同时合并PDF文件可能是一个大问题.合并大文件时,"预览"不涵盖展平,并且会使系统变慢.这些和其他问题可能会迫使您寻找更好的选择.让我们探索在Mac上组合PDF以涵 ...

  10. SpringBoot+Vue+Itext实现前端请求文件流的方式导出PDF时在指定位置添加照片

    场景 SpringBoot+Vue+Itext实现前端请求文件流的方式下载PDF: SpringBoot+Vue+Itext实现前端请求文件流的方式下载PDF_BADAO_LIUMANG_QIZHI的 ...

最新文章

  1. 运维工程师的职责和前景
  2. Pycharm连接远程服务器进行代码调试开发
  3. 基于visual Studio2013解决算法导论之012计数排序
  4. android.process.media+sd,android P系统WRITE_MEDIA_STORAGE添加读写SD卡权限
  5. arcgis 分区 属性值_ArcGIS制图之Maplex自动点抽稀
  6. VUE config/index.js文件配置
  7. python排大小函数_python numpy 一些函数 大小排序和统计
  8. mysql 表 类型_mysql表类型
  9. SaltStack 部署案例 02
  10. java 读写分离 mvc_spring MVC、mybatis配置读写分离
  11. SpringCloud工作笔记053---SLF4J简介与使用(整合log4j_并切换logging)
  12. python能做什么-学会Python后都能做什么?网友们的回答简直不要太厉害
  13. SpringMVC之二:配置 Spring MVC
  14. 正则表达式就这么简单!
  15. 221. Maximal Square
  16. 微信批量扫码进群系统
  17. LwIP协议栈之数据包pbuf
  18. java图书馆抢座系统_JSP+SSM+Mysql实现的图书馆预约占座管理系统
  19. python opencv 图片对比度
  20. MIT 6.828 Lab1(从引导扇区开始)

热门文章

  1. 一名淘宝店长运营店铺靠谱指南
  2. lintcode刷题——罗马数字转整数
  3. 桥本分数式-DFS法-Java
  4. 没有一个绝对安全的系统 (二) 破解路由器后台密码
  5. 如何快速选购腾讯云DNS解析服务?
  6. 家庭版win7怎么把计算机,win7系统旗舰版如何变回家庭版
  7. Windows 11旗舰版
  8. python逐步回归筛选变量_SPSS进行逐步回归分析
  9. Google账号找回通用方法(尤其是知道账号密码仍无法登录和找回的)
  10. 台式计算机无线网卡怎么找,win7台式机找不到无线网卡怎么办