在生产环境中测试,无水印。
随时随地满足您的需求。
获得30天的全功能产品。
几分钟内就能启动并运行。
在您的产品试用期间,全面访问我们的支持工程团队。
PDF(可移植文档格式)文件广泛用于共享和展示文档,有时您可能需要将 PDF 拆分为多个文件。 无论您是要提取特定页面、将大型文档划分为较小的部分,还是要为每个章节创建单独的文件,在各种情况下,分割 PDF 都是一项非常有价值的任务。
在本文中,我们将学习如何使用 C# 来分割 PDF。 C# 是一门用途广泛、功能强大的语言,而且有几个库可以相对直接地操作 PDF。 我们将探讨以下两个用于在 C# 中分割 PDF 的库。
首先安装 iText7 库
从输入的 PDF 文件创建一个 PdfReader。
使用 PdfDocument 来处理 PDF 内容。
计算每个分割文件的页数。
设置初始页面范围值。
使用循环处理每个分割文件。
为当前分割文件创建一个新的 PdfDocument。
将原始文档中的页面复制到新文档中。
为下一次迭代更新页面范围值。
保存已完成输出的 PDF。
重复,直到创建完所有文件:
IronPDF 是一个强大的 C# 库,专为处理 PDF 文件而设计。 它提供用于从PDF文档创建、修改和提取内容的功能。 开发人员可以从头创建PDF,编辑现有的PDF,并且合并或拆分它们。 此外,IronPDF 还擅长将 HTML 内容转换为 PDF 格式,因此在生成报告或文档时非常有用。 IronPDF 支持数字签名、安全功能和高质量输出,简化了 .NET 应用程序中与 PDF 相关的任务。
iTextSharp(iText 7)是在.NET框架中用于处理PDF文件的广泛使用的库。 它提供了强大的功能,可通过编程创建、修改和提取 PDF 文档中的内容。 开发人员可以使用 iTextSharp 在 PDF 中添加文本、图像、表格和其他图形元素。 此外,它还支持文档组装、数字签名,并符合存档和可访问性标准。 iTextSharp 最初是一个 Java 库,后被移植到 .NET 中,并拥有一个活跃的开发者和用户社区。
要使用 Visual Studio 中的包管理器控制台安装IronPDF NuGet 包,请按照以下步骤操作:
在 Visual Studio 中,转到工具 -> NuGet 包管理器 -> 包管理器控制台。
:ProductInstall
这将下载并安装 IronPDF 软件包及其依赖项到您的项目中。 安装完成后,您就可以开始在 C# 项目中使用 IronPDF 执行 PDF 相关任务了。
或者,您可以在 Visual Studio 中使用 NuGet 包管理器安装 IronPDF,或直接将包添加到您的项目文件中。另一个选择是从官方网站下载该包并手动添加到您的项目中。 每种方法都提供了将 IronPDF 集成到您的 C# 项目中以实现 PDF 相关功能的直接方法。
要在Visual Studio中使用包管理器控制台安装iTextSharp,您可以按照以下步骤进行:
在 Visual Studio 中,转到工具 -> NuGet 包管理器 -> 包管理器控制台。
Install-Package itext7
这将下载 iTextSharp 软件包及其依赖项,并将其安装到项目中。 安装完成后,你就可以开始在 C# 项目中使用 iTextSharp 处理 PDF 了。
我们可以使用 IronPDF 将一个 PDF 文件分割成多个 PDF 文件。 它提供了实现这一目标的简单方法。 以下代码将 PDF 源文件作为输入,并将其分割为多个 PDF 文件。
static void Main(string [] args)
{
string file = "input.pdf"'
// Call the SplitPdf method to split the PDF
SplitPdfUsingIronPDF(file, "output_split", NumberOfSplitFiles);
}
static void SplitPdfUsingIronPDF(string inputPdfPath, string outputFolder, int NumberOfSplitFiles)
{
PdfDocument sourceFile = PdfDocument.FromFile(inputPdfPath);
int firstPage = 1;
int lastPage = 2;
int totalPageInOneFile = sourceFile.PageCount / NumberOfSplitFiles;
for (int i = 1; i <= NumberOfSplitFiles; i++)
{
// Copy multiple pages into a new document
PdfDocument newSplitPDF = sourceFile.CopyPages(firstPage,lastPage);
string name = $@"{outputFolder}\SplitPDF_IronPDF_{i}.pdf";
newSplitPDF.SaveAs(name);
firstPage = lastPage + 1;
lastPage += totalPageInOneFile;
}
}
static void Main(string [] args)
{
string file = "input.pdf"'
// Call the SplitPdf method to split the PDF
SplitPdfUsingIronPDF(file, "output_split", NumberOfSplitFiles);
}
static void SplitPdfUsingIronPDF(string inputPdfPath, string outputFolder, int NumberOfSplitFiles)
{
PdfDocument sourceFile = PdfDocument.FromFile(inputPdfPath);
int firstPage = 1;
int lastPage = 2;
int totalPageInOneFile = sourceFile.PageCount / NumberOfSplitFiles;
for (int i = 1; i <= NumberOfSplitFiles; i++)
{
// Copy multiple pages into a new document
PdfDocument newSplitPDF = sourceFile.CopyPages(firstPage,lastPage);
string name = $@"{outputFolder}\SplitPDF_IronPDF_{i}.pdf";
newSplitPDF.SaveAs(name);
firstPage = lastPage + 1;
lastPage += totalPageInOneFile;
}
}
这段代码的目的是使用 IronPDF 库将给定的 PDF 文件分割成多个较小的 PDF 文件。 定义 SplitPdfUsingIronPDF 方法就是为了实现这一功能。
inputPdfPath:表示输入 PDF 文件路径的字符串(例如,“input.pdf”)。
outputFolder:表示拆分PDF文件将保存到的输出文件夹的字符串(例如,“output_split”)。
在 SplitPdfUsingIronPDF 方法内部:
通过从指定的 inputPdfPath 加载 PDF,创建名为 sourceFile 的 PdfDocument 对象。
两个整数变量 firstPage 和 lastPage 已初始化。 这些表示分割的页面范围。
totalPageInOneFile 的计算方法是将源 PDF 的总页数除以指定的 NumberOfSplitFile。
循环迭代从 1 到 NumberOfSplitFiles:
创建名为 newSplitPDF 的新 PdfDocument 对象。
从 sourceFile 中将第一页至最后一页(包括)复制到 newSplitPDF。
生成的小PDF文件保存在指定的输出文件夹中,文件名类似于“SplitPDF_IronPDF_1.pdf”(用于第一次分割)。
应将 "input.pdf "替换为输入 PDF 文件的实际路径。确保 IronPDF 库已正确安装并在项目中引用。
输出文件创建为
现在,我们将使用 iTextSharp 将 PDF 文档分割成多个 PDF 文件。 以下代码将源文件作为输入,并将 PDF 文档分割成多个较小的文件。
static void Main(string [] args)
{
string inputPath = "input.pdf";
// Output PDF files path (prefix for the generated files)
string outputPath = "output_split";
int NumberOfSplitFiles = 3;
// Call the SplitPdf method to split the PDF
SplitPdfUsingiTextSharp(inputPath, outputPath, NumberOfSplitFiles);
}
static void SplitPdfUsingiTextSharp(string inputPdfPath, string outputFolder, int NumberOfSplitFiles)
{
using (PdfReader Reader = new PdfReader(inputPdfPath))
{
using (PdfDocument doc = new PdfDocument(Reader))
{
int totalPageInOneFile = doc.GetNumberOfPages() / NumberOfSplitFiles;
int firstPage = 1;
int lastPage = totalPageInOneFile; // int pagenumber
for (int i = 1; i <= NumberOfSplitFiles; i++)
{
string filename = $@"{outputFolder}\SplitPDF_iTextSharp_{i}.pdf";
using (PdfDocument pdfDocument = new PdfDocument(new PdfWriter(filename))) // create output file
{
//pdfDocument.get
doc.CopyPagesTo(firstPage, lastPage, pdfDocument);
}
firstPage = lastPage + 1;
lastPage += totalPageInOneFile;
}
}
}
}
static void Main(string [] args)
{
string inputPath = "input.pdf";
// Output PDF files path (prefix for the generated files)
string outputPath = "output_split";
int NumberOfSplitFiles = 3;
// Call the SplitPdf method to split the PDF
SplitPdfUsingiTextSharp(inputPath, outputPath, NumberOfSplitFiles);
}
static void SplitPdfUsingiTextSharp(string inputPdfPath, string outputFolder, int NumberOfSplitFiles)
{
using (PdfReader Reader = new PdfReader(inputPdfPath))
{
using (PdfDocument doc = new PdfDocument(Reader))
{
int totalPageInOneFile = doc.GetNumberOfPages() / NumberOfSplitFiles;
int firstPage = 1;
int lastPage = totalPageInOneFile; // int pagenumber
for (int i = 1; i <= NumberOfSplitFiles; i++)
{
string filename = $@"{outputFolder}\SplitPDF_iTextSharp_{i}.pdf";
using (PdfDocument pdfDocument = new PdfDocument(new PdfWriter(filename))) // create output file
{
//pdfDocument.get
doc.CopyPagesTo(firstPage, lastPage, pdfDocument);
}
firstPage = lastPage + 1;
lastPage += totalPageInOneFile;
}
}
}
}
上述代码演示了如何使用 iTextSharp 将大型 PDF 文件分割成小块。每个较小的 PDF 文档将包含原始文档的一部分。
主要功能封装在 SplitPdfUsingiTextSharp 方法中。
在 SplitPdfUsingiTextSharp 方法内部:
通过从指定的 inputPdfPath 加载 PDF,创建名为 Reader 的 PdfReader 对象。
使用阅读器初始化名为 DOC 的 PdfDocument 对象。
循环迭代从 1 到 NumberOfSplitFiles:
在指定的输出文件夹中,创建了一个新的较小的 PDF 文件,文件名类似于“SplitPDF_iTextSharp_1.pdf”(用于第一个拆分)。
在这个新的 PDF 文档 (pdfDocument) 中,页面是从原始文档复制的:
从第一个页面到最后一个页面(包括在内)被复制。
较小的 PDF 已保存。
确保 iTextSharp 库已正确安装并在项目中引用。 将 "input.pdf "替换为输入 PDF 文件的实际路径。
为了比较使用 iTextSharp 和 IronPDF 的两种拆分方法,让我们根据几个因素对它们进行评估:
易用性:
iTextSharp:iTextSharp 方法涉及创建 PdfReader、PdfDocument 和 PdfWriter。 它可以计算页面范围,并将页面复制到新文档中。 这种方法需要了解 iTextSharp API。
代码可读性:
iTextSharp:代码涉及更多步骤,使其稍长且可能更复杂,难以阅读。
性能:
iTextSharp: 性能可能会受到重复创建和处理PdfDocument实例的影响。
内存使用:
iTextSharp:创建多个 PdfDocument 实例将消耗更多内存。
总之,iTextSharp 和 IronPDF 都为用 C# 来分割 PDF 文件提供了强大的解决方案,各自都有自己的优势。 IronPDF 因其简单性、可读性以及更直接的方法可能带来的更好性能而脱颖而出。
在寻求多功能性和易用性之间平衡的开发者可能会发现IronPDF是一个具有吸引力的选择。此外,IronPDF还提供免费试用。 最终,如何在 iTextSharp 和 IronPDF 之间做出选择取决于各个项目的要求和偏好的开发风格。