如何在 .NET 中将 PDF 分成单独的文件

如何在 .NET 中将 PDF 分成单独的文件

本文展示了如何将 PDF 文件分为单页或自定义范围,使用 Aspose.PDF Splitter for .NET. 插件允许开发人员自动分成文件存档、提取或分发工作流。

现实世界问题

从PDF中提取特定页面或部分是一种常见的业务需要,但手动做这是一种错误和缓慢 - 特别是对于大或重复的工作。

解决方案概述

Aspose.PDF Splitter for .NET 可通过单页或自定义页面组合以最小代码编译 PDF 文件。

原則

  • Visual Studio 2019 或以后
  • .NET 6.0 或更高
  • Aspose.PDF for .NET 通过 NuGet 安装
PM> Install-Package Aspose.PDF

步骤实施

步骤 1: 安装和设置 Aspose.PDF

添加所需名称空间:

using Aspose.Pdf.Plugins;
using System.IO;

步骤2:将 PDF 分成单独的文件(每个输出单页)

最简单的使用案例将每个页面分成一个新的PDF:

var inputPath = @"C:\Samples\sample.pdf";
var outputPath1 = @"C:\Samples\SplitPage1.pdf";
var outputPath2 = @"C:\Samples\SplitPage2.pdf";

var splitter = new Splitter();
var options = new SplitOptions();
options.AddInput(new FileDataSource(inputPath));
options.AddOutput(new FileDataSource(outputPath1));
options.AddOutput(new FileDataSource(outputPath2));
splitter.Process(options);

使用案例和应用程序(与代码变量)

1. 将所有页面分成多页 PDF(Batch 模式)

要将每个页面分成一个单独的文件,以动态的方式列出输出:

string inputPath = @"C:\Samples\multipage.pdf";
int pageCount = 10; // Set to your PDF's total pages
var splitter = new Splitter();
var options = new SplitOptions();
options.AddInput(new FileDataSource(inputPath));
for (int i = 1; i <= pageCount; i++)
{
    string outPath = $@"C:\Samples\SplitPage_{i}.pdf";
    options.AddOutput(new FileDataSource(outPath));
}
splitter.Process(options);

2. 按自定义页面排序分割

目前, Splitter 插件分为基于输出路径提供的顺序的文件 - 每个分裂部分的单个输出的文件. 要提取自定义序列(例如,页面 1-3、4-6),您可能需要首先使用完整的 Aspose.PDF API 以将序带提到新的文件,然后按需要进一步分解。

对于每个自定义范围,创建一个暂时的PDF,并使用上面的分割器完成分裂。

3. Batch 将所有 PDF 分成一个文件夹

自动分解多个 PDF 同时:

string[] pdfFiles = Directory.GetFiles(@"C:\Samples\SplitQueue", "*.pdf");
foreach (var file in pdfFiles)
{
    var splitter = new Splitter();
    var options = new SplitOptions();
    options.AddInput(new FileDataSource(file));
    // Optionally, auto-generate output paths for each file/page
    for (int i = 1; i <= 2; i++) // adjust for actual page count
    {
        string outPath = Path.Combine(@"C:\Samples\SplitResults", $"{Path.GetFileNameWithoutExtension(file)}_page{i}.pdf");
        options.AddOutput(new FileDataSource(outPath));
    }
    splitter.Process(options);
}

4. 自定义输出名称和组织

使用代码逻辑来定义输出文件名,基于输入文件、日期或页面,以便在大规模操作中更好地跟踪和组织分裂文件。

共同挑战与解决方案

挑战: 知道所需的输出文件的准确数量解决方案: 使用完整的 Aspose.PDF 图书馆或提前阅读页数,然后创建正确的输出数量。

挑战: 保持数据或标记解決方案: The Splitter 保留內容;為先進的需求(傳送資料、書標),使用額外的 Aspose.PDF APIs。

性能与最佳实践

  • 总是备份原始PDF之前分割
  • 自动输出名称,以防止过写
  • 验证输出以确保所有预期的页面/文件都是创建的
  • 对于先进的分布(按图标、大小),请参见主 Aspose.PDF 图书馆

完整实施例子

using Aspose.Pdf.Plugins;
using System;
using System.IO;

class Program
{
    static void Main()
    {
        var inputPath = @"C:\Samples\sample.pdf";
        var outputPath1 = @"C:\Samples\SplitPage1.pdf";
        var outputPath2 = @"C:\Samples\SplitPage2.pdf";

        var splitter = new Splitter();
        var options = new SplitOptions();
        options.AddInput(new FileDataSource(inputPath));
        options.AddOutput(new FileDataSource(outputPath1));
        options.AddOutput(new FileDataSource(outputPath2));
        splitter.Process(options);
    }
}

结论

Aspose.PDF Splitter for .NET 允许快速、自动的 PDF 分配,用于存档、提取或分发。 使用插件为单页分配、自定义范围处理或集合操作 - 在您的 .Net 应用程序中进行流媒体管理。

 中文