itext合并两个PDF流
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流相关推荐
- iText 合并多个 pdf 文件
iText 合并多个 pdf 文件 iText 合并多个 pdf 文件 核心代码 完整的类代码 参考代码 参考来源 iText 合并多个 pdf 文件 核心代码 /*** 合并多个pdf** @par ...
- Java 使用iText7生成带页码的PDF文件(同时生成目录,但是不会合并两个PDF)
一.效果图 1.带页码效果 2.目录效果 前言:Java 使用iText7生成带页码的PDF文件,同时生成目录PDF,但限于水平,暂时还在摸索合并两个PDF.不过看了一下,iText好像有生成目录的代 ...
- 合并两个xml文件 php_怎样合并两个pdf文件
Pdf文件我们常常在办公中用到,有很多朋友在网上手机资料后不知道怎么把它加入到pdf文件中,有些朋友可能会想到复制粘贴,可是pdf文件是不能够直接进行编辑的,那么应该怎么才能把pdf文件合并在一起呢? ...
- java 使用itext合并多个pdf文件成一个pdf
maven <!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf --><dependency><g ...
- itext合并A4的pdf为A3版式
试卷生成A3板式, 源文件为A4 使用itext实现 maven坐标 <!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf ...
- 图片合并成PDF,两个PDF的合并
需求: 将多张手机照片合并成一个PDF,并于另一个成型PDF合并 过程: 使用全能扫描王处理一遍,拆剪掉多余部分,并提高亮度增加文字对比度 合并: 使用Faststone Capture合并图片即可. ...
- 两个pdf合并成一个pdf,pdf合并教程
说起合并两个PDF文件,我们通常就会形成一个思维定式,感觉直接把一个pdf文件内容复制到另一个PDF文件,不就合并完成了吗?其实这样的方法应用在PDF文件的身上是不成立的,复制粘贴只能用于那些可以自由 ...
- 两个pdf文档怎么合并在一起
两个pdf文档怎么合并在一起? 无论我们使用什么样的文件格式,如果所接触到的文件特别多的话,都要考虑将文件合并之后继续使用,这样有助于我们保存和传输.通常来讲我们在合并文件的时候,直接利用复制粘贴的方 ...
- mac怎么合并两个容器_PDF怎样合并?在Mac上合并PDF文件的最佳方法
在保存编辑内容的同时合并PDF文件可能是一个大问题.合并大文件时,"预览"不涵盖展平,并且会使系统变慢.这些和其他问题可能会迫使您寻找更好的选择.让我们探索在Mac上组合PDF以涵 ...
- SpringBoot+Vue+Itext实现前端请求文件流的方式导出PDF时在指定位置添加照片
场景 SpringBoot+Vue+Itext实现前端请求文件流的方式下载PDF: SpringBoot+Vue+Itext实现前端请求文件流的方式下载PDF_BADAO_LIUMANG_QIZHI的 ...
最新文章
- 运维工程师的职责和前景
- Pycharm连接远程服务器进行代码调试开发
- 基于visual Studio2013解决算法导论之012计数排序
- android.process.media+sd,android P系统WRITE_MEDIA_STORAGE添加读写SD卡权限
- arcgis 分区 属性值_ArcGIS制图之Maplex自动点抽稀
- VUE config/index.js文件配置
- python排大小函数_python numpy 一些函数 大小排序和统计
- mysql 表 类型_mysql表类型
- SaltStack 部署案例 02
- java 读写分离 mvc_spring MVC、mybatis配置读写分离
- SpringCloud工作笔记053---SLF4J简介与使用(整合log4j_并切换logging)
- python能做什么-学会Python后都能做什么?网友们的回答简直不要太厉害
- SpringMVC之二:配置 Spring MVC
- 正则表达式就这么简单!
- 221. Maximal Square
- 微信批量扫码进群系统
- LwIP协议栈之数据包pbuf
- java图书馆抢座系统_JSP+SSM+Mysql实现的图书馆预约占座管理系统
- python opencv 图片对比度
- MIT 6.828 Lab1(从引导扇区开始)