使用itextpdf操作合并拼接了pdf,实现了三种方法,三种方法都使用原文档作为模板,保证输出文档的可靠性。

Mave POM

com.itextpdf

itextpdf

5.5.13

方法一:

PDFJoin.mergepdf(fileList,"d:/pdfjoin/all.pdf");

IText自带的merge,合并pdf

方法二:

public static void mergepdf(List fileList, String savepath) {

Document document = null;

try {

document = new Document(new PdfReader(fileList.get(0)).getPageSize(1));

PdfCopy copy = new PdfCopy(document, new FileOutputStream(savepath));

document.open();

for (int i = 0; i < fileList.size(); i++) {

PdfReader reader = new PdfReader(fileList.get(i));

copy.addDocument(reader);

reader.close();

}

} catch (IOException e) {

e.printStackTrace();

} catch (DocumentException e) {

e.printStackTrace();

} finally {

if (document != null) {

document.close();

}

}

}

读取所有文档然后追加到新的文档

方法三:

public static void mergepdf(List fileList, String savepath) {

Document document = null;

try {

document = new Document(new PdfReader(fileList.get(0)).getPageSize(1));

PdfCopy copy = new PdfCopy(document, new FileOutputStream(savepath));

document.open();

for (int i = 0; i < fileList.size(); i++) {

PdfReader reader = new PdfReader(fileList.get(i));

int n = reader.getNumberOfPages();

for (int j = 1; j <= n; j++) {

document.newPage();

PdfImportedPage page = copy.getImportedPage(reader, j);

copy.addPage(page);

}

reader.close();

}

} catch (IOException e) {

e.printStackTrace();

} catch (DocumentException e) {

e.printStackTrace();

} finally {

if (document != null) {

document.close();

}

}

}

读取PDF文档的页,然后一页一页追加到新的文档。

总结:方法一很简单,官方的可靠,而且性能相差不多,但根据我的测试,后面方法三的速度会稍微快一点点,这个我页奇怪,也许只是偶然或者测试不够充分。

java reader 组合_Java IText 拼接合并PDF的三种方法相关推荐

  1. C#实现将excel转换成pdf的三种方法

    文章目录 1.使用免费版的spire 2.使用Microsoft.Office.Interop.Excel 3.使用Aspose.Cells 本人经过一上午的搜索,总结了C#将excel转pdf的三种 ...

  2. java 获取键盘点击_Java中获取键盘输入值的三种方法介绍

    程序开发过程中,需要从键盘获取输入值是常有的事,但Java它偏偏就没有像c语言给我们提供的scanf(),C++给我们提供的cin()获取键盘输入值的现成函数!Java没有提供这样的函数也不代表遇到这 ...

  3. java list移除符合条件的元素_java List删除指定元素的三种方法

    java List删除指定元素有3种方法,分别是普通for循环,增强for循环以及原生的Iterator迭代器循环来删除list中指定的某个元素,非常的简单. 1:普通for循环遍历list,并删除指 ...

  4. web java获取当前时间_Java 获取当前系统时间的三种方法

    准备工作: import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; 方式一: /** ...

  5. java输出数组中的元素_Java快捷输出数组元素的三种方法

    1.简介 Java中快捷输出数组中各个元素笔者目前所知的就三种方法,今天就简单的做个记录.大家如果有什么更好的方法,麻烦留言评论. 2.代码 public class ArrayPrint { pub ...

  6. 将ppt转换成pdf的三种方法分享

    在我们工作中,总免不了将一些ppt幻灯片里的内容复制到pdf文档中,一些同仁遇到这种现象常常不知道如何下手,有的甚至直接将ppt文本内容复制到word文档中,然后保存成pdf格式,这样打开肯定会导致排 ...

  7. java 当前时间string_Java 获取当前系统时间的三种方法

    准备工作: import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; 方式一: /** ...

  8. java 当月最后一天_java中取得当月最后一天的四种方法

    java中取得当月最后一天的四种方法 第一种,使用Calendar的roll方法,在限制某个日期字段不改变的形式下,改变其他日期字段的值. 第二种,使用Calendar的getActualMaximu ...

  9. java set 操作_java:Set循环遍历的俩种方法使用

    java:Set循环遍历的俩种方法使用 package collection; import java.util.*; public class NewSet { public static void ...

  10. 合并石子(三种方法)

    合并石子 题目 在一个操场上一排地摆放着N堆石子.现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分.请设计一个程序,计算出将N堆石子合并成 ...

最新文章

  1. 华人小哥用苹果音箱「隔空」测心律,论文登上Nature子刊
  2. linux 为什么编译内核,Linux内核编译与安装
  3. CTFHub-Web-信息泄露
  4. 谈谈汽车诊断之KWP2000/ISO14229/ISO15765/SAEJ1939
  5. python环境配置,windows系统,anaconda集成开发环境
  6. NSLog 输出格式集合
  7. python控制台动画,如何使用Python 3.x在控制台应用程序中创建ASCII动画?
  8. 计算机内存外存共同点,存储器:内存和外存
  9. C51单片机流水灯C代码
  10. laravel文档——文件夹结构
  11. yolov 论文发表在什么期刊上_joe期刊是什么期刊_joe是什么意思_joe牌子
  12. Latex 中文配置解析
  13. 第九组 通信3班 063 防火墙配置
  14. ue4 中动画控制,利用conduit节点
  15. 一树桃红,在生命的枝头葱茏
  16. 100000+人体验过后都说:这TM绝对是最变态的英语学习方法……
  17. iOS 最新 APP提交上架流程~(打包 ipa)
  18. Leo写的前言 自由与规则—— 程序员羊皮卷 连载 8
  19. 【简洁实用】好用的杀毒软件 【网络安全防护】
  20. php 画布旋转,gdip图形库,画布如何进行按照指定的角度进行旋转

热门文章

  1. 【使用指南】ComponentOne Enterprise .NET开发控件集
  2. 不加群提取群成员_QQ群排名优化技术教程
  3. Macromedia flash制作落叶飘下动画
  4. _ie6png图片的修复
  5. ssq历史50【参数化】出现排序,最近未出排序,排行图
  6. NX二次开发-BlockUI对话框嵌套MFC对话框制作进度条
  7. 微信小程序游戏开发│石头剪刀布游戏(附源码)
  8. 无源蜂鸣器c语言编程,电磁式蜂鸣器驱动原理与简单蜂鸣器编程及电路设计案例...
  9. win10计算机休眠快捷键,win10睡眠快捷键,win10睡眠按啥键唤醒
  10. android画板的实验报告,android实验报告模板_实验一