使用itextpdf实现截取pdf文档第几页到第几页,进行分片
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
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://blog.csdn.net/Peanutfight/article/details/113853241
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
相关文章