linux 分割pdf,PDFBox分割PDF文档

在前一章中,我们已经看到了如何将JavaScript添加到PDF文档。 现在来学习如何将给定的PDF文档分成多个文档。

分割PDF文档中的页面

可以使用Splitter类将给定的PDF文档分割为多个PDF文档。 该类用于将给定的PDF文档分成几个其他文档。

以下是拆分现有PDF文档的步骤

第1步:加载现有的PDF文档

使用PDDocument类的静态方法load()加载现有的PDF文档。 此方法接受一个文件对象作为参数,因为这是一个静态方法,可以使用类名称调用它,如下所示。

File file = new File("path of the document")

PDDocument document = PDDocument.load(file);

第2步:实例化Splitter类

这个Splitter类包含了分割给定的PDF文档的方法,因此实例化这个类,如下所示。

Splitter splitter = new Splitter();

第3步:分割PDF文档

使用Splitter类的Split()方法来分割给定的文档。 该方法接受PDDocument类的一个对象作为参数。

List Pages = splitter.split(document);

split()方法将给定文档的每个页面分割为单独的文档,并以列表的形式返回所有这些文档。

第4步:创建一个迭代器对象

要遍历文档列表,需要获取上述步骤中获取的列表的迭代器对象,使用listIterator()方法获取列表的迭代器对象,如下所示。

Iterator iterator = Pages.listIterator();

第5步:关闭文档

最后,使用PDDocument类的close()方法关闭文档,如下所示。

document.close();

示例

假设在目录:F:\worksp\pdfbox 中有一个名称为mypdf.pdf的PDF文档,并且该文档包含两个页面 - 一个页面包含图像,另一个页面包含文本,如下所示。

a4e5a6de590f86876ba8c8e074800e30.png

这个例子演示了如何分割上面提到的PDF文档。 在这里,将把名称为mypdf.pdf的PDF文档分成两个不同的文档:sample1.pdf和sample2.pdf。 将此代码保存在名为SplitPages.java的文件中。

package com.yiibai;

import org.apache.pdfbox.multipdf.Splitter;

import org.apache.pdfbox.pdmodel.PDDocument;

import java.io.File;

import java.io.IOException;

import java.util.List;

import java.util.Iterator;

public class SplitPages {

public static void main(String[] args) throws IOException {

//Loading an existing PDF document

File file = new File("F:/worksp/pdfbox/mypdf.pdf");

PDDocument document = PDDocument.load(file);

//Instantiating Splitter class

Splitter splitter = new Splitter();

//splitting the pages of a PDF document

List Pages = splitter.split(document);

//Creating an iterator

Iterator iterator = Pages.listIterator();

//Saving each page as an individual document

int i = 1;

while(iterator.hasNext()) {

PDDocument pd = iterator.next();

pd.save("F:/worksp/pdfbox/sample"+ i +".pdf");

i = i + 1;

}

System.out.println("Multiple PDF’s created");

document.close();

}

}

执行上面示例代码,得到以下结果 -

Multiple PDF’s created

生成的两个文件,打开效果如下 -

358f37864c67ba6e2d637fd6c53106f0.png

第二个PDF文件:

4d6bd40081f07e63f25b98e0d6bbfc63.png

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/513233.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python3 读取文本文件_python3读取文件最简单的办法

原博文 2020-06-11 09:14 −file open(test.txt) #读文件 s file.read() #把文件放到字符串里面 print(s) #输出字符串 ... 相关推荐 2019-12-09 20:32 − [TOC] # 1. 模块 ## 1.1 模块是什么? - 模块就是个 *Python* 文件 - 一个模块就是一个包含 *Python* 代码…

常用的几款工具让 Kubernetes 集群上的工作更容易

作者 | Addo Zhang来源 | 云原生指北其实日常工作中在集群上的操作也非常多,今天就来介绍我所使用的工具。kubectl-alias使用频率最高的工具,我自己稍微修改了一下,加入了 StatefulSet 的支持。这个是我的 https://github.com/addozhang/kube…

以太坊白皮书_以太坊发展历程

2013年年末,以太坊创始人Vitalik Buterin发布了以太坊初版白皮书,在全球的密码学货币社区陆续召集到一批认可以太坊理念的开发者,启动了项目。2014年2月,Vitalik在迈阿密比特币会议上第一次公布了以太坊项目,核心开发团…

来电科技:基于 Flink + Hologres 的实时数仓演进之路

简介: 本文将会讲述共享充电宝开创企业来电科技如何基于 Flink Hologres 构建统一数据服务加速的实时数仓 作者:陈健新,来电科技数据仓库开发工程师,目前专注于负责来电科技大数据平台离线和实时架构的整合。 深圳来电科技有限…

linux find 图片,linuxfind命令的介绍【图解】

作为一种分时的特数操作系统,Linux具备Windows和mac OS与众不同的操作界面和用户体验,虽然它并不是最主流的操作系统,但是它会作为操作系统而得到众多程序开发人员的青睐和熟知。find命令是操作系统环境下进行计算机功能调用的特殊命令&#…

移动云TeaTalk:这是一场云数据库技术的深度对话!

随着云计算的发展,数据库上云已经成为趋势,云数据库服务相对于传统数据库在架构、性能与安全等方面都存在着新的挑战。11月23日,移动云TeaTalk线上直播活动成功举办。本次活动以“云数据库技术创新研究与实践”为主题,邀请了移动云…

devc++源文件未编译_iOS 编译知识小结

简介源码到可执行文件流程编译器 编译流程预处理(preprocessor)词法分析(lexical anaysis)语法分析(semantic analysis)CodeGen生成汇编代码生成目标文件生成可执行文件Xcode中查看Clang编译.m文件信息 Xcode常见编译报错分析1. duplicate symbols报错2. symbol(s) not found f…

微信不再提供小程序打开App?借助H5为App引流的方式你必须知道!

简介: 2021年5月14日App开发者领域发布了一条重要消息:微信开放平台为了提升用户体验,将于2021年5月20日(后来延期到2021年5月27日)起不再提供“小程序打开App技术服务”,现在能够实现从微信打开App的方式只…

Gartner APM 魔力象限技术解读——全量存储? No! 按需存储?YES!

简介: 在云原生时代,充分利用边缘节点的计算和存储能力,结合冷热数据分离实现高性价比的数据价值探索已经逐渐成为 APM 领域的主流。 作者:夏明(涯海) 调用链记录了完整的请求状态及流转信息,是…

山石网科发布数据安全综合治理体系,覆盖数据全生命周期

编辑 | 宋慧 出品 | CSDN 云计算 11月24日,在“从一维到多维 ,让数据安全有章可循——山石网科数据安全综合治理体系发布会”上,山石网科面向全行业推出《数据安全治理白皮书》,并向企业侧正式发布全新的数据安全治理体系和数据安…

android 获取cpu使用率_超详细的zabbix监控windows磁盘IO及cpu使用率教程

概述今天主要介绍怎么用zabbix来监控windows CPU使用率及磁盘IO,下面一起来看看吧~1、监控Windows-CPU使用率1.1、创建模板在zabbix中,默认的模板不带CPU使用率的监控,为减少重复工作率,在template模板下创建一个模板然后模板直接…

深入理解领域驱动设计中的聚合

简介: 聚合模式是 DDD 的模式结构中较为难于理解的一个,也是 DDD 学习曲线中的一个关键障碍。合理地设计聚合,能清晰地表述业务一致性,也更容易带来清晰的实现,设计不合理的聚合,甚至在设计中没有聚合的概念…

jenkins linux 发邮件,linuxea:jenkins pipeline邮件提醒的两种方式(5)

可以通过Mailer Plugin和Email-ext plugin插件发送邮件在pipeline中可以在执行完成进行,通过直接的结果发送失败或者成功,也可以在执行阶段过程中,如果在那个阶段执行失败发送,想看第一中,只发送失败的详细结果&#x…

致青春!一键上线你们专属的云上毕业纪念册

简介: 毕业不说再见,青春不散场!在云端,在一起!在问答https://developer.aliyun.com/ask/321737的留言区域晒出自己「线上环境」部署的毕业纪念册,在6月30号18点之前点赞数前10可以获得我们送出的毕业大礼包…

信息安全≠数据安全,山石网科发布2021《数据安全治理白皮书》

完整的数据安全治理体系,是一个包含了目标、组织、流程、技术等多维度的复杂系统工程。数据安全治理应该侧重四点:数据安全治理是必选项;是一套完整的治理体系问题;是多维视角的立体建构能力;是建立数据全生命周期的多…

dynamo python修改多个参数_40岁小白学了30天python发现,编程真的其乐无穷

今天是十一哥学python的第30天。时间过得挺快,感觉第一篇学习心得写了还没多久,这就已经不知不觉写30篇了。从第1集开始,看视频教程、记笔记、截图、写代码,然后写文章、配图、发帖、回复网友留言,以及在学习交流群里跟…

友盟+U-APM 移动应用性能体验报告:Android崩溃率达0.32%,OPPO 、华为、VIVO 崩溃表现良好

简介: 应用性能稳定是良好用户体验中非常关键的一环,而现实情况却是应用崩溃、卡顿、加载缓慢、页面白屏等问题,频频出现在用户的真实体验之中,成为影响业务表现的直接杀手。为此,应用性能管理(APM&#xf…

阿里云张毅萍:构建边缘云全站加速网络体系

简介: 2021年6月9日,亚太内容分发大会暨CDN峰会在北京举行,阿里云边缘云网络高级技术专家张毅萍受邀参会,分享了阿里云在构建边缘云全站加速网络体系的实践,基于边缘云节点支撑各种应用协议的分层传输加速,…

http中的请求头各部分都是什么意思_硬核!30 张图解 HTTP 常见的面试题

每日一句英语学习,每天进步一点点:前言在面试过程中,HTTP 被提问的概率还是比较高的。小林我搜集了 5 大类 HTTP 面试常问的题目,同时这 5 大类题跟 HTTP 的发展和演变关联性是比较大的,通过问答 图解的形式由浅入深的…

Hologres揭秘:高性能原生加速MaxCompute核心原理

简介: Hologres技术揭秘系列持续更新中,本期我们将带来Hologres高性能原生加速查询MaxCompute的技术原理解析。 Hologres(中文名交互式分析)是阿里云自研的一站式实时数仓,这个云原生系统融合了实时服务和分析大数据的…