VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > c#编程 >
  • C#实现合并及拆分PDF文件的方法

在C#中实现合并及拆分PDF文件,我们可以使用多种第三方库,但这里我将继续以iTextSharp为例,因为它是一个广泛使用且功能强大的库,用于处理PDF文档。
 
### 合并PDF文件
 
使用iTextSharp合并PDF文件,你需要遍历所有要合并的源文件,并将它们的页面逐个复制到新的PDF文档中。
 
using System;
using System.IO;
using iTextSharp.text.pdf;
 
public class PdfMerger
{
    public static void MergePdfs(string[] sourceFiles, string outputFile)
    {
        using (PdfCopy copy = new PdfCopy(new FileStream(outputFile, FileMode.Create)))
        {
            foreach (string sourceFile in sourceFiles)
            {
                PdfReader reader = new PdfReader(sourceFile);
                int numberOfPages = reader.NumberOfPages;
                for (int pageNum = 1; pageNum <= numberOfPages; pageNum++)
                {
                    copy.AddPage(copy.GetImportedPage(reader, pageNum));
                }
                reader.Close();
            }
        }
    }
}
 
// 使用示例
string[] files = { "file1.pdf", "file2.pdf" };
string output = "merged.pdf";
PdfMerger.MergePdfs(files, output);
 
### 拆分PDF文件
 
拆分PDF文件通常意味着将一个大文件分成多个小文件,每个小文件包含原始文件的一部分页面。
 
using System;
using System.IO;
using iTextSharp.text.pdf;
 
public class PdfSplitter
{
    public static void SplitPdf(string sourceFile, string outputDir, int pagesPerFile)
    {
        PdfReader reader = new PdfReader(sourceFile);
        int numberOfPages = reader.NumberOfPages;
 
        if (!Directory.Exists(outputDir))
        {
            Directory.CreateDirectory(outputDir);
        }
 
        for (int i = 0; i < numberOfPages; i += pagesPerFile)
        {
            int end = Math.Min(i + pagesPerFile - 1, numberOfPages - 1);
            string outputFile = Path.Combine(outputDir, $"Part_{(i / pagesPerFile) + 1}.pdf");
 
            using (PdfCopy copy = new PdfCopy(new FileStream(outputFile, FileMode.Create)))
            {
                for (int pageNum = i; pageNum <= end; pageNum++)
                {
                    copy.AddPage(copy.GetImportedPage(reader, pageNum + 1)); // iTextSharp使用1作为起始页码
                }
            }
        }
 
        reader.Close();
    }
}
 
// 使用示例
string sourceFile = "largefile.pdf";
string outputDir = "output_directory";
int pagesPerFile = 10;
PdfSplitter.SplitPdf(sourceFile, outputDir, pagesPerFile);
 
请注意,在拆分PDF时,我创建了一个新的目录(如果它尚不存在)来存放拆分后的文件。此外,iTextSharp中的页码是从1开始的,因此当你通过`GetImportedPage`方法引用页面时,需要确保页码是正确的。
 
还要注意的是,这些示例代码假设你已经在你的项目中通过NuGet安装了iTextSharp库。如果你还没有安装,你可以通过NuGet包管理器或命令行来安装它:
 
Install-Package iTextSharp
 
最后,请记住,iTextSharp(及其Java版iText)的某些功能可能需要商业许可,特别是在商业产品中使用时。因此,在决定使用之前,请务必检查其许可协议。如果你正在寻找一个免费的解决方案,你可以考虑其他开源库,如PdfSharp(尽管它可能不支持iTextSharp的所有功能)。


最后,如果你对python语言还有任何疑问或者需要进一步的帮助,请访问https://www.xin3721.com 本站原创,转载请注明出处:https://www.xin3721.com/ArticlecSharp/c50261.html

相关教程