当前位置:网站首页>使用itextpdf实现截取pdf文档第几页到第几页,进行分片
使用itextpdf实现截取pdf文档第几页到第几页,进行分片
2022-04-23 14:03:00 【洋哥登陆】
itextpdf实现截取pdf文档第几页到第几页
起因:pdf文档太大,100M以上,导致前端根本无法显示。解决方案,后端进行pdf文档分片操作,例如十页十页的传给前端。
1.使用itextpdf
导入依赖
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.13</version>
</dependency>
2.业务逻辑
@GetMapping("/download")
public void pdf(@RequestParam(value = "page", required = false) String page, HttpServletResponse response) throws IOException, DocumentException {
//文件路径
path = "C:\\Users\\pdf文件.pdf"";
// 读取pdf文档
PdfReader reader = new PdfReader(path);
//总页数
int numberOfPages = reader.getNumberOfPages();
// 截取开始页
int start = Integer.parseInt(page.substring(0, 1));
//截取pdf部分页,格式"2-5" 第2页到第5页 页码超出范围(10页,你选择"15-20")只会读最后一页
// 参数为String型,可让前端传值,控制读取第几页
// reader.selectPages("2-5");
reader.selectPages(page);
//源码没怎么看懂,但是需要内存中存放文件流,所以用了HttpServletResponse
PdfStamper stamp = new PdfStamper(reader, response.getOutputStream());
// 开始页 如果大于pdf总页数,不返回文件流,stamp.close()结果返回1
if(start <= numberOfPages){
stamp.close();
}
reader.close();
}
3.结果
一千多页的文档,我选择截取1-5页,那么只会显示1,2,3,4,5这几页
版权声明
本文为[洋哥登陆]所创,转载请带上原文链接,感谢
https://blog.csdn.net/Peanutfight/article/details/113853241
边栏推荐
- Qt Designer怎样加入资源文件
- VsCode-Go
- Neuron and neural network
- STM32 learning record 0007 - new project (based on register version)
- JS 烧脑面试题大赏
- 力扣刷题 101. 对称二叉树
- POI operation word template replaces data and exports word
- CDH cluster integration Phoenix based on CM management
- 理解虚基类、虚函数与纯虚函数的概念(转)
- Call wechat customer service applet
猜你喜欢
Special test 05 · double integral [Li Yanfang's whole class]
JS 烧脑面试题大赏
JS brain burning interview question reward
快速安装mongodb
As a junior college student, I studied hard in closed doors for 56 days, won Ali offer with tears, five rounds of interviews and six hours of soul torture
STM32 learning record 0007 - new project (based on register version)
Windos中安装labellmg教程
Qt Designer怎样加入资源文件
分库分表 & ShardingSphere
org.apache.parquet.schema.InvalidSchemaException: A group type can not be empty. Parquet does not su
随机推荐
Intégration de Clusters CDH Phoenix basée sur la gestion cm
freeCodeCamp----time_ Calculator exercise
快捷键(多行)
Prediction of tomorrow's trading limit of Low Frequency Quantization
_模_板_
JS brain burning interview question reward
Oracle告警日志alert.log和跟踪trace文件中文乱码显示
Quartus prime hardware experimental development (de2-115 board) experiment II function adjustable comprehensive timer design
Yarn online dynamic resource tuning
Qt Designer怎样加入资源文件
1256: bouquet for algenon
趣谈网络协议
浅谈基于openssl的多级证书,Multi-level CA的签发和管理,以及双向认证
scikit-learn构建模型的万能模板
STM32 learning record 0007 - new project (based on register version)
微信小程序进行蓝牙初始化、搜索附近蓝牙设备及连接指定蓝牙(一)
微信小程序通过低功耗蓝牙设备进行定位及测距(二)
Quartus Prime硬件实验开发(DE2-115板)实验二功能可调综合计时器设计
switch使用(微信小程序)
request模块