处理PDF文档时,我们可以通过合并的方式,来任意组几个不同的PDF文件或者通过拆分将一个文件分解成多个子文件,这样的好处是对文档的存储、管理很方便。下面将通过Java程序代码介绍具体的PDF合并、拆分的方法。

工具

  • Free Spire.PDF for Java(免费版)

:2.0.0版本的比之前的1.1.0版本在功能上做了很大提升,支持所有收费版的功能,对于通过Java编程来处理PDF文档非常实用。

jar文件导入:

步骤 1:在Java程序中新建一个文件夹可命名为Lib。下载安装包后,解压,将解压后的文件夹下的子文件夹lib中的Spire.Pdf.jar和Spire.Common.jar两个文件复制到新建的文件夹下,如下图:

步骤2:**建好文件夹后,引用两个文件:选中这两个jar文件,点击鼠标右键,选择“Build Path” – “Add to Build Path”。

【示例1】合并PDF文档

import com.spire.pdf.*; import java.io.*; public class Merge2 { public static void main(String[] args) throws Exception {String outputFile = "output/mergeFilesByStream.pdf";FileInputStream stream1 = new FileInputStream(new File("sample1.pdf"));FileInputStream stream2 = new FileInputStream(new File("sample2.pdf"));FileInputStream stream3 = new FileInputStream(new File("sample3.pdf")); //加载PDF示例文档InputStream[] streams = new FileInputStream[]{stream1, stream2, stream3}; //合并PDF文档PdfDocumentBase doc = PdfDocument.mergeFiles(streams); //保存文档doc.save(outputFile);doc.close();}
}

合并前:

合并后:

【示例2】拆分PDF文档**

这里分2种情况来进行。

测试文档:

1. 按每一页单独拆分

import com.spire.pdf.*; public class SplitPDF1 { public static void main(String[] args){ //加载需要拆分的PDF文档PdfDocument doc = new PdfDocument();doc.loadFromFile("test.pdf"); //调用方法split()将PDF文档按每一页拆分为单独的文档doc.split("output/splitDocument-{0}.pdf", 0);doc.close();}
}

拆分结果:

2. 按指定页数范围拆分

import com.spire.pdf.*; import com.spire.pdf.graphics.PdfMargins; import java.awt.geom.Point2D; public class SplitPDF2 { public static void main(String[] args){ //加载需要拆分的PDF文档PdfDocument doc = new PdfDocument();doc.loadFromFile("test.pdf"); //新建第1个PDF文档1PdfDocument newpdf1 = new PdfDocument();PdfPageBase page; //将原PDF文档的第1、2页拆分,并保存到newpdf1for(int i = 0;i<2;i++){page = newpdf1.getPages().add(doc.getPages().get(i).getSize(), new PdfMargins(0));doc.getPages().get(i).createTemplate().draw(page, new Point2D.Float(0,0));}newpdf1.saveToFile("split/result1.pdf"); //新建第2个PDF文档PdfDocument newpdf2 = new PdfDocument(); //将原PDF文档的第3、4页拆分,并保存到newpdf2for(int i = 2;i<4;i++){page = newpdf2.getPages().add(doc.getPages().get(i).getSize(), new PdfMargins(0));doc.getPages().get(i).createTemplate().draw(page, new Point2D.Float(0,0));}newpdf2.saveToFile("split/result2.pdf");}
}

拆分结果:

在此我向大家推荐一个架构学习交流圈。交流学习微信:539413949(里面有大量的面试题及答案)里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

Java 合并、拆分PDF文档相关推荐

  1. 数据与计算机通信第十版中文版pdf_PDFsam Basic for mac(合并拆分PDF文档)中文免费版...

    PDFsam Basic for mac中文版是一个功能强大的工具,可以直观地组合 PDF文件,重新排序页面,删除页面,拆分,合并,旋转,加密,解密,提取文本,转换为灰度,裁剪PDF文件. 下载 ht ...

  2. java拆分_Java 拆分 PDF 文档

    在办公过程中,我们有时会遇到需要将一个比较大的PDF文档拆分成多个文档的情况, 今天这篇文章就将介绍两种使用Free Spire.PDF for Java来拆分PDF文档的方法. 方法一:将一个PDF ...

  3. java pdf合并_Java 合并、拆分PDF文档

    本文将介绍如何在Java程序中合并及拆分PDF文档,合并文档时,包括合并多个不同PDF文档为一个文档,以及合并PDF文档的不同页面为一页:拆分文档是,包括将PDF文档按每一页拆分,以及按指定页数范围来 ...

  4. [.NET开发] C# 合并、拆分PDF文档

    在整理文件时,将多个同类型文档合并是实现文档归类的有效方法,也便于文档管理或者文档传输.当然,也可以对一些比较大的文件进行拆分来获取自己想要的部分文档.可以任意地对文档进行合并.拆分无疑为我们了提供极 ...

  5. 福昕阅读器怎么拆分PDF文档?

    在工作和学习中不可避免需要将自己需要的PDF文档进行拆分或合并操作,网上搜索了很多方法,大部分都是使用PDF编辑器来实现,但是,其实还有一个免费好用的方法,就是用福昕阅读器领鲜版可以实现拆分PDF文档 ...

  6. 10个免费在线拆分PDF文档的网站,简单易用!

    我们都接触过PDF文档,从电子书.手册.发票到银行对账单,数字世界要求格式标准化,而 PDF已经很好地发挥了它的作用. 但是,出于各种原因,我们经常要对PDF文档进行二次编辑,最常见的功能之一是将多个 ...

  7. Word处理控件Aspose.Words功能演示:使用Java合并MS Word文档

    在各种情况下,可能需要合并多个MS Word文档,例如减少文档数量,在单个文件中保留相似种类的内容(即发票)等.许多在线应用程序使您可以合并两个或多个MS Word文档但是,您可能需要在自己的Web或 ...

  8. PDF办公技巧:怎么拆分PDF文档

    怎么拆分PDF文档呢?我们想要将一个PDF文档拆分成多个PDF文档需要怎么操作呢?想要拆分PDF文档需要使用到专业的PDF编辑器来进行操作,下面小编就为大家操作一下拆分PDF文档的方法步骤. 操作软件 ...

  9. JAVA合并pdf,拆分pdf文档

    毕业材料整理的时候要合并pdf文档,把一些文档按页码拆分出来,我本来想用wps弄的,但是它要vip,就这?就vip?哼,身为一个计算机毕业的,这种小事与其再去网上找别的软件解决,不如自己代码解决.(其 ...

  10. Java 拆分PDF文档

    这篇文章主要介绍以下两种拆分方式: 将一个PDF文档快速拆分为多个PDF(每个PDF包含1页) 根据指定页码范围,将一个PDF文档拆分为2个或多个PDF(每个PDF可以包含不同的页数) 使用组件: S ...

最新文章

  1. linux cp 目录不存在自动创建,关于linux:Linux技巧cp命令自动创建不存在的目录和只复制修改的文件...
  2. 天气webservice服务
  3. Django输入日期返回第几天time
  4. 史上最全的Angular.js 的学习资源
  5. solr cloud 更新 solrconfig 配置_Solr各版本新特性「4.x,5.x,6.x,7.x」
  6. 鸿蒙还是不是安卓,华为捐赠鸿蒙核心架构!是否形成“三足鼎立”?
  7. PyTorch系列入门到精通——模型保存与加载
  8. Android获取Java类名/文件名/方法名/行号
  9. C语言——变量篇(一)变量关键字static、auto、extern、register
  10. C++ 实现matlab高斯滤波函数imgaussfilt
  11. 计算机的acpi高级电源选项配置,ACPI电源管理模式详解
  12. java sniffer_用Java来实现的Sniffer
  13. PxCook 点击设计稿即可生成代码前端,高效智能的设计研发工具,智能标注软件。...
  14. 计数oracle,SQL数据透视表子组计数
  15. 双色球(过滤历史数据+过滤连号+红球包含+篮球包含+大小分布)
  16. android安全风险分析,Android安全检测报告,等保测评过不了,提示风险
  17. 从软件工程师到创业二十年从业经历感悟
  18. AI矩形描边内外同时设置,居中对齐
  19. 数学 -- log
  20. 微信小程序中函数事件的执行顺序

热门文章

  1. DM 关键字、屏蔽关键字
  2. 如何解决DNS解析错误
  3. HDU - 6287 口算训练 (二分+思维)
  4. nodejs返回带图片的HTML页面,Nodejs实现简单的网页图片获取
  5. Python A value is trying to be set on a copy of a slice from a DataFrame
  6. mac air 2019安装双系统
  7. mysql 经纬度 索引_转:mysql根据经纬度查找排序
  8. 企业财务报表分析【4】
  9. linux打开笔记本摄像头驱动程序,Linux下使用Opencv打开笔记本摄像头
  10. 笔记本摄像头计算机,如何解决笔记本电脑摄像头异常问题