使用itextpdf,对PDF文件进行分割

maven依赖

<!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf -->
<dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13</version>
</dependency>

实现工具类代码

package com.example.util;import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.*;
import lombok.extern.slf4j.Slf4j;import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;/*** PDF处理工具类** @author azhuzhu 2020/8/11 14:53*/
@Slf4j
public class PdfUtil {/*** 将PDF文件切分成多个PDF** @param filename  文件名* @param splitSize 拆分单个文件页数*/public static void splitPdf(String filename, int splitSize) throws Exception {PdfReader reader;try {reader = new PdfReader(filename);} catch (IOException e) {log.error(e.getMessage(), e);throw new Exception("读取PDF文件失败");}int numberOfPages = reader.getNumberOfPages();int newFileCount = 0;// PageNumber是从1开始计数的int pageNumber = 1;while (pageNumber <= numberOfPages) {Document doc = new Document();String splitFileName = filename.substring(0, filename.length() - 4) + "(" + newFileCount + ").pdf";PdfCopy pdfCopy;try {pdfCopy = new PdfCopy(doc, new FileOutputStream(splitFileName));} catch (FileNotFoundException | DocumentException e) {log.error(e.getMessage(), e);throw new Exception("切割文件副本创建失败");}doc.open();// 将pdf按页复制到新建的PDF中for (int i = 1; pageNumber <= numberOfPages && i <= splitSize; ++i, pageNumber++) {doc.newPage();PdfImportedPage page = pdfCopy.getImportedPage(reader, pageNumber);pdfCopy.addPage(page);}doc.close();newFileCount++;pdfCopy.close();}}}

测试类

package com.example.demo;import com.example.util.PdfUtil;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest
class DemoApplicationTests {@Testvoid contextLoads() throws Exception {PdfUtil.splitPdf("D:/组合 2.pdf", 1);}}

执行结果

Java分割PDF文件(itextpdf)相关推荐

  1. java分割PDF文件——itextpdf

    动机:使用Java将PDF论文分割成一个个4页大小的PDF,便于使用有道翻译免费翻译PDF文档(因为每次只免费翻译4页,使用了不少翻译软件,还是有道翻译好用,翻译质量好,就是收费):顺便练习下写代码. ...

  2. 如何用 Java 对 PDF 文件进行电子签章

    转自:如何用 Java 对 PDF 文件进行电子签章 - Ferocious - 博客园 一.概述 二.技术选型 三.生成一个图片签章 四.如何按模板生成PDF文件 五.如何生成PKSC12证书 六. ...

  3. 咖啡汪日志——JAVA导出pdf文件加水印 文字+图片、文字

    咖啡汪日志--JAVA导出pdf文件加水印 文字和图片.文字 hello,又大家见面了! 作为一只不是在戏精就是在戏精路上的哈士奇,今天要展示给大家的就是如何快捷地给pdf文件增加各种水印.嗷呜呜,前 ...

  4. # Java 生成pdf文件

    Java 生成pdf文件 引入依赖 <!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf --> <depend ...

  5. Java生成PDF文件_自用

    Java生成PDF文件 一.前言 前几天,做ASN条码收货模块,需要实现打印下载收货报表,经一番查找,选定iText--用于生成PDF文档的一个Java类库.废话不多说,进入正题. 二.iText简介 ...

  6. Java合并pdf文件

    Java合并pdf文件 今天帮老师整理资料需要合并pdf文件,下了许多软件发现都需要VIP才行,所以写了个程序来帮助合并,直接在主程序中修改文件路径即可,如下图: 主要代码如下: package co ...

  7. Java实现pdf文件转图片

    Java实现pdf文件转图片 文章顺序是按照测试类- -Service- -Service实现类- -工具类- - POM依赖. test测试类里 pdfPath:存放pdf源文件的地方 imgflo ...

  8. java pdf 转换 word_如何使用Java将pdf文件转换为word文件

    如何使用Java将pdf文件转换为word文件? 而且,它看起来像它一样容易吗? 解决方法: public class PDFTextReader { static String pdftoText( ...

  9. 使用java实现pdf文件转换为jpg或者png(可以批量操作、分类存放)

    使用java实现pdf文件转换为jpg或者png(可以批量操作) 使用java代码实现将pdf转换为图片格式.支持归类,支持pdf多页分页面转换存放. 需求背景:有几百个文件夹,每个文件夹里有两个pd ...

最新文章

  1. TiKV 成功晋级 CNCF 孵化项目
  2. json web token 实践登录以及校验码验证
  3. join为什么每个字符都分割了 js_js的join()与 split() (转)
  4. 为什么京东只能对商品评价不能对店铺评价?
  5. 酷友观点/经验:支付接口返回数据接收地址,session数据丢失(或者说失效)的问题浅析(原创文章)...
  6. mybatis批量插入oracle大量数据记录性能问题解决
  7. ubuntu 16.04 登录后黑屏
  8. 外包征集令:一个Android TV酒店项目
  9. 关于DiskFileUpload的杂谈
  10. android app原型设计工具,手机端APP高仿真(UEUI)原型设计(完整版)
  11. 软件工程----开发大致流程
  12. vsCode的使用过程中遇到的问题?
  13. 腾讯「文涌 (Effidit)」2.0版发布,打造更懂写作的智能助手
  14. JS - 解决鼠标单击、双击事件冲突问题(同时实现两种事件响应)
  15. loopback接口的具体作用
  16. Linux(Centos7.8)中conda虚拟环境搭建LSTM神经网络基于django3.1.2的api接口
  17. [LOJ6515]「雅礼集训 2018 Day10」贪玩蓝月
  18. 国庆放假前一周,再学这些技术,安安稳稳过假期
  19. 解决了联想i908手机SIM卡注册失败、受限服务的BUG
  20. windows 批处理文件

热门文章

  1. oracle12C以逗号隔开怎么写,10g之后支持中文逗号作为查询分隔符
  2. 保姆级教程:手把手教你搭建个人网站
  3. 设计模式(二)—— 策略模式(其实就是面向接口编程的应用场景!)
  4. android 涟漪背景,Android 水波效果 | 涟漪效果 实现
  5. 四川托普计算机学校官网,四川中等职业技术学院
  6. Win系统 - 微信居然自带修复工具?快来试试
  7. 综述:人工智能、数据科学、机器学习
  8. 4)自适应滤波(一)[LMS算法]
  9. WinRT surface屏幕常亮设置
  10. python画双折线图-python双折线图