You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:12:00