用C#写一个分割pdf的程序
时间: 2023-06-24 16:06:54 浏览: 190
C#文件分割程序
以下是一个使用 C# 和 iTextSharp 库实现的简单的 PDF 分割程序。请注意,iTextSharp 库需要通过 NuGet 包管理器安装。
```csharp
using System;
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
namespace PdfSplitter
{
class Program
{
static void Main(string[] args)
{
// 源 PDF 文件路径
string sourcePdfPath = @"C:\example\source.pdf";
// 分割后的 PDF 文件路径
string outputPdfPath = @"C:\example\output.pdf";
// 要分割的页码范围,例如 1-3 表示从第一页到第三页
string pageRange = "1-3";
// 分割 PDF
SplitPdf(sourcePdfPath, outputPdfPath, pageRange);
Console.WriteLine("PDF 分割完成。");
Console.ReadLine();
}
static void SplitPdf(string sourcePdfPath, string outputPdfPath, string pageRange)
{
using (var sourcePdfStream = new FileStream(sourcePdfPath, FileMode.Open))
{
var reader = new PdfReader(sourcePdfStream);
// 获取要分割的页码范围
var pageRanges = new[] { pageRange };
var pageSelection = new PdfReaderSelection(pageRanges);
var selectedPages = pageSelection.Select(reader);
// 创建分割后的 PDF 文件
using (var outputPdfStream = new FileStream(outputPdfPath, FileMode.Create))
{
var document = new Document(reader.GetPageSizeWithRotation(1));
var writer = PdfWriter.GetInstance(document, outputPdfStream);
writer.SetFullCompression();
document.Open();
var cb = writer.DirectContent;
foreach (var page in selectedPages)
{
document.SetPageSize(reader.GetPageSizeWithRotation(page));
document.NewPage();
var importedPage = writer.GetImportedPage(reader, page);
cb.AddTemplate(importedPage, 0, 0);
}
document.Close();
}
}
}
}
}
```
在上面的代码中,`SplitPdf` 方法接收三个参数:源 PDF 文件路径,分割后的 PDF 文件路径和要分割的页码范围。页码范围应该作为字符串传递,例如 `"1-3"` 表示从第一页到第三页。
在 `SplitPdf` 方法中,我们使用 `PdfReader` 对象读取源 PDF 文件,并使用 `PdfReaderSelection` 类选择要分割的页面。然后,我们使用 `PdfWriter` 对象将分割后的页面写入新的 PDF 文件中。
以上代码只是一个简单的示例,实际应用中可能需要处理更多异常情况和边缘情况。
阅读全文