java使用itext开源包实现pdf文件拆分,可根据需要,设置拆分的页数,亲测可用

本文介绍了一种使用Java和itext库实现的PDF文件自动拆分方法。只需设定待拆分PDF文件路径及每个拆分文件的最大页数,即可实现自动化拆分。代码通过读取原始PDF文件,创建新的PDF文档并逐页复制内容,直至完成所有页面的拆分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

该代码需要添加itext.jar的依赖,建议直接去maven仓库下载。具体操作只需要设置待拆分文件的路径,以及拆分后文件的最大页数,实现自动拆分。

public class SplitFileTest {
	public static void main(String[] args) {
		splitExistFile();
	}

	public static void splitExistFile() {

		// 文档路径
		String path = "D:\\Personality\\pdf\\";
		// 待拆分文件名
		String pdfFileName = "test.pdf";
		// 每个文件最大页数
		int filePageSize = 2;
		// 待拆分文件的总页数
		int totalPage;
		// 拆分后的文件数量
		int splitFileNum;
		int pageIndex = 1;
		PdfReader reader = null;
		try {
			String orignName = pdfFileName.split("\\.")[0];
			reader = new PdfReader(path + pdfFileName);
			totalPage = reader.getNumberOfPages();
			splitFileNum = totalPage % filePageSize == 0 ? totalPage / filePageSize : totalPage / filePageSize + 1;
			for (int i = 0; i < splitFileNum; i++) {
				String newFileName = path + orignName + "_" + (i + 1) + ".pdf";
				// 新建一个PDF文件
				Document document = null;
				PdfWriter writer = null;
				try {
					document = new Document();
					writer = PdfWriter.getInstance(document, new FileOutputStream(newFileName));
					document.open();
					PdfContentByte pdfContentByte = writer.getDirectContent();
					for (int j = 0; j < filePageSize; j++) {
						document.newPage();
						pdfContentByte.addTemplate(writer.getImportedPage(reader, pageIndex), 0, 0);
						pageIndex ++;
						if (pageIndex > totalPage)
							break;

					}
				}  catch (IOException e) {
					e.printStackTrace();
				} catch (DocumentException e) {
					e.printStackTrace();
				}catch (Exception e) {
					e.printStackTrace();
				}finally {
				
					//这个地方要特别注意资源关闭的顺序
					if (document != null)
						document.close();
					
					if (writer != null)
						writer.close();			
										
				}				
			}
		} catch (IOException e1) {
			e1.printStackTrace();
		} finally {
			if(reader!=null) reader.close();
		}

	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

穿条秋裤到处跑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值