当前位置:网站首页>使用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