如何用iText 7实现PDF单页拆分?原iTextSharp代码无法复用
用iText 7拆分PDF为单页独立文档
嗨,我懂你现在的痛点——iText 7的API和旧版iTextSharp差别不小,原来的代码确实没法直接复用。不过别慌,我给你整理了适配iText 7的实现方案,完全能实现把多页PDF拆成单个页面独立文件的需求。
实现思路
iText 7用PdfDocument统一处理PDF的读写操作,替代了iTextSharp里PdfReader+PdfCopy的组合。我们只需要打开源PDF,然后循环每个页面,为每个页面创建新的PDF文档,再把对应页面复制进去就行。
完整代码示例
using iText.Kernel.Pdf; using System.IO; public void SplitPdfToSinglePages(string sourcePdfPath, string outputFolder) { // 先确保输出文件夹存在,避免报错 if (!Directory.Exists(outputFolder)) { Directory.CreateDirectory(outputFolder); } // 打开源PDF,using语句自动释放资源 using (PdfDocument sourceDoc = new PdfDocument(new PdfReader(sourcePdfPath))) { int totalPages = sourceDoc.GetNumberOfPages(); for (int pageIndex = 1; pageIndex <= totalPages; pageIndex++) { // 拼接输出文件路径,文件名按页码命名 string outputPath = Path.Combine(outputFolder, $"single_page_{pageIndex}.pdf"); // 创建新的单页PDF文档 using (PdfDocument targetDoc = new PdfDocument(new PdfWriter(outputPath))) { // 复制当前页码的页面到新文档 sourceDoc.CopyPagesTo(pageIndex, pageIndex, targetDoc); } } } }
关键细节说明
PdfDocument:这是iText 7的核心类,不管是读还是写PDF都靠它,搭配PdfReader读取源文件,搭配PdfWriter生成新文件。CopyPagesTo():这个方法可以批量复制页面,这里我们指定起始和结束页都是当前页码,实现单页复制。- 资源管理:全程用
using包裹文档对象,确保文件流自动关闭,不会出现资源泄漏的问题。
调用示例
你可以像这样使用这个方法:
// 替换成你的源PDF路径和输出文件夹路径 SplitPdfToSinglePages(@"D:\test\7pages.pdf", @"D:\test\split_pages");
执行后,7页的PDF就会被拆成7个独立的单页PDF,文件名分别是single_page_1.pdf到single_page_7.pdf,都保存在你指定的输出文件夹里。
内容的提问来源于stack exchange,提问作者Arsiwaldi
相关产品推荐
相关产品推荐

