產品比較

比較在C#中使用iTextSharp和IronPDF進行PDF拆分

發佈 2024年3月6日
分享:

PDF(可攜式文件格式)文件廣泛用於共享和展示文件,有時您可能需要將 PDF 拆分為多個文件。 無論您是想提取特定頁面、將大型文件分成較小的部分,還是為每個章節創建獨立的文件,拆分 PDF 在各種情境中都可能是一項有價值的任務。

在本文中,我們將學習如何使用 C# 分割 PDF。 C# 是一種多功能且強大的語言,並且有多個可用的庫使操控 PDF 相對簡單。 我們將探討以下兩個用於 C# 拆分 PDF 的程式庫。

  1. iTextSharp

    2.IronPDF

如何使用 ITextSharp 在 C# 中拆分 PDF

  1. 首先安裝 iText7 庫

  2. 從輸入的 PDF 文件建立一個 PdfReader。

  3. 使用 PdfDocument 來處理 PDF 內容。

  4. 計算每個拆分檔案的頁數。

  5. 設定初始頁面範圍值。

  6. 使用迴圈處理每個分割檔案。

  7. 為當前拆分的文件創建一個新的 PdfDocument。

  8. 從原始文件中複製頁面到新文件。

  9. 更新下一次迭代的頁面範圍值。

  10. 將完成的輸出PDF保存。

  11. 重複直到所有檔案建立完成:

  12. 繼續進行指定數量的分割檔案處理。

IronPDF

在 C# 语言中使用 iTextSharp 和 IronPDF 來分割 PDF 的比較:圖 1 - IronPDF 網頁

IronPDF是一個強大的 C# 程式庫,專為處理 PDF 文件而設計。 它提供的功能用于創建, 修改,和提取PDF 文件的內容。 開發者可以從頭生成 PDF、編輯現有的 PDF,並且合併或拆分他們。 此外,IronPDF 在將 HTML 內容轉換為 PDF 格式方面表現出色,非常適合生成報告或文檔。 IronPDF 支援數位簽章、安全功能和高品質輸出,簡化了 .NET 應用程式中的 PDF 相關任務。

iTextSharp

C#中使用iTextSharp和IronPDF拆分PDF的比較:圖2 - iTextSharp網頁

iTextSharp (iText 7)是一個廣泛使用的庫,用於在.NET框架中處理PDF文件。 它提供了強大的功能,用於以程式方式創建、修改和提取PDF文件的內容。 開發人員可以使用 iTextSharp 向 PDF 添加文字、圖像、表格和其他圖形元素。 此外,它支持文件組裝、數字簽名,以及符合檔案和無障礙標準的規範。 起初作為 Java 庫,iTextSharp 被移植到 .NET 並擁有一個活躍的開發人員和用戶社群。

安裝 IronPDF 函式庫

若要安裝IronPDF NuGet 套件在 Visual Studio 的套件管理器主控台中,按照以下步驟進行:

  1. 在 Visual Studio 中,依次選擇工具 -> NuGet 套件管理員 -> 套件管理控制台。

  2. 使用以下命令安裝 IronPDF NuGet 套件:
    :ProductInstall

這將下載並安裝 IronPDF 套件及其相依套件到您的項目中。 安裝完成後,您可以在您的 C# 專案中開始使用 IronPDF 來進行 PDF 相關任務。

或者,您可以在 Visual Studio 中使用 NuGet 套件管理器安裝 IronPDF,或直接將套件新增到您的專案檔案中。另一個選擇是從官方網站並手動將其添加到您的專案中。 每個方法都提供了一種簡單的方法,將 IronPDF 集成到您的 C# 專案中,以實現與 PDF 有關的功能。

安裝iTextSharp庫

安裝iTextSharp在 Visual Studio 中使用 Package Manager Console,您可以按照以下步驟進行:

  1. 在 Visual Studio 中,依次選擇工具 -> NuGet 套件管理員 -> 套件管理控制台。

  2. 使用以下命令安裝 iTextSharp NuGet 套件:
    Install-Package itext7

這將下載並安裝iTextSharp套件及其相依性到您的專案中。 安裝完成後,您可以在您的C#專案中開始使用iTextSharp來處理PDF檔案。

使用 IronPDF 在 C# 中拆分 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;
     }
 }
Shared Sub Main(ByVal args() As String)
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'	string file = "input.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++) { PdfDocument newSplitPDF = sourceFile.CopyPages(firstPage,lastPage); string name = string.Format("{0}\SplitPDF_IronPDF_{1}.pdf", outputFolder, i); newSplitPDF.SaveAs(name); firstPage = lastPage + 1; lastPage += totalPageInOneFile; } }
VB   C#

程式碼說明

此程式碼的目的是使用 IronPDF 程式庫將給定的 PDF 文件分割成多個較小的 PDF 文件。 SplitPdfUsingIronPDF 方法已定義以實現此功能。

方法參數

  1. inputPdfPath:表示輸入 PDF 文件路徑的字串(例如,「input.pdf」).

  2. outputFolder:表示將拆分的 PDF 文件儲存位置的輸出資料夾字串(例如,「output_split」).

  3. NumberOfSplitFiles:整數,指示原始 PDF 將分割成多少個較小的 PDF 文件。

拆分過程

在 SplitPdfUsingIronPDF 方法中:

  1. 名為 sourceFile 的 PdfDocument 物件是通過從指定的 inputPdfPath 加載 PDF 創建的。

  2. 兩個整數變量,firstPage 和 lastPage,被初始化。 這些代表了拆分的頁面範圍。

  3. totalPageInOneFile 是通過將源 PDF 的總頁數除以指定的 NumberOfSplitFiles 計算得出的。

  4. 一個迴圈從 1 遍歷到 NumberOfSplitFiles:

  5. 一個名為 newSplitPDF 的新 PdfDocument 對象已創建。

  6. 從第一頁到最後一頁的頁面(包容)從 sourceFile 複製到 newSplitPDF。

  7. 生成的小型 PDF 會以類似 "SplitPDF_IronPDF_1.pdf" 的檔名儲存。(對於第一次分割)在指定的輸出資料夾中。

  8. firstPage 和 lastPage 的值會在下一次迭代中更新。

注意

您應該將 "input.pdf" 替換為實際的輸入 PDF 文件的路徑。確保您的項目中已正確安裝並引用了 IronPDF 庫。

輸出文件創建為:

在 C# 中 iTextSharp 和 IronPDF 拆分 PDF 的比較:圖 3 - 生成的輸出文件

在 C# 中使用 iTextSharp 拆分 PDF 文件

現在,我們將使用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;
             }
         }
     }
 }
Shared Sub Main(ByVal args() As String)
	 Dim inputPath As String = "input.pdf"
	 ' Output PDF files path (prefix for the generated files)
	 Dim outputPath As String = "output_split"
	 Dim NumberOfSplitFiles As Integer = 3
	 ' Call the SplitPdf method to split the PDF
	 SplitPdfUsingiTextSharp(inputPath, outputPath, NumberOfSplitFiles)
End Sub
Shared Sub SplitPdfUsingiTextSharp(ByVal inputPdfPath As String, ByVal outputFolder As String, ByVal NumberOfSplitFiles As Integer)
	 Using Reader As New PdfReader(inputPdfPath)
		 Using doc As New PdfDocument(Reader)
'INSTANT VB WARNING: Instant VB cannot determine whether both operands of this division are integer types - if they are then you should use the VB integer division operator:
			 Dim totalPageInOneFile As Integer = doc.GetNumberOfPages() / NumberOfSplitFiles
			 Dim firstPage As Integer = 1
			 Dim lastPage As Integer = totalPageInOneFile '  int pagenumber
			 For i As Integer = 1 To NumberOfSplitFiles
				 Dim filename As String = $"{outputFolder}\SplitPDF_iTextSharp_{i}.pdf"
				 Using pdfDocument As New PdfDocument(New PdfWriter(filename)) ' create output file
					 'pdfDocument.get
					 doc.CopyPagesTo(firstPage, lastPage, pdfDocument)
				 End Using
				 firstPage = lastPage + 1
				 lastPage += totalPageInOneFile
			 Next i
		 End Using
	 End Using
End Sub
VB   C#

程式碼說明

上述程式碼演示了如何使用 iTextSharp 將大型 PDF 文件拆分為較小的部分。每個較小的 PDF 文件將包含原始文件的一部分。

使用 iTextSharp 拆分 PDF文件

  1. 主要功能封裝在 SplitPdfUsingiTextSharp 方法中。

  2. 上述方法接受三個參數:inputPdfPath,outputFolder,以及NumberOfSplitFiles。

使用 PdfReader 和 PdfDocument

在 SplitPdfUsingiTextSharp 方法中:

  1. 一個名為 Reader 的 PdfReader 物件是透過從指定的 inputPdfPath 加載 PDF 文件來創建的。

  2. 一個名為 DOC 的 PdfDocument 物件被使用 Reader 初始化。

  3. 源 PDF 的總頁數除以 NumberOfSplitFiles,以確定每個較小的 PDF 應包含多少頁。

拆分過程

一個迴圈從 1 遍歷到 NumberOfSplitFiles:

  1. 一個新的較小 PDF 檔案已創建,文件名類似於 "SplitPDF_iTextSharp_1.pdf"。(對於第一次分割)在指定的輸出資料夾中。

  2. 在這個新的 PDF 文件中(pdf文件),頁面是從原始文件複製的:

  3. firstPage 到 lastPage(包容)被複製。

  4. 較小的 PDF 已保存。

  5. firstPage 和 lastPage 的值會在下一次迭代中更新。

注意

確保在您的專案中正確安裝並引用了 iTextSharp 庫。 將 "input.pdf" 替換為您輸入 PDF 文件的實際路徑。

使用 iTextSharp 與 IronPDF 在 C# 中分割 PDF 的比較:圖 4 - 已創建的輸出文件

比較

為了比較使用 iTextSharp 和 IronPDF 的兩種分割方法,我們基於幾個因素來評估它們:

  1. 易於使用:

    • iTextSharp: iTextSharp 方法涉及建立 PdfReader、PdfDocument 和 PdfWriter。 它計算頁數範圍並將頁面複製到新文檔。 此方法需要了解iTextSharp API。

    • IronPDF: IronPDF 方法包括從源文件創建 PdfDocument,複製頁面,並將其保存到新文件。它具有更簡單的 API。
  2. 程式碼可讀性:

    • iTextSharp:代碼涉及更多步驟,使其稍微長一些,可能更難以閱讀。

    • IronPDF: 由於步驟和方法調用較少,代碼更簡潔且易讀。
  3. 效能:

    • iTextSharp:重複創建和處置PdfDocument實例可能會影響性能。

    • IronPDF: 由於頁面複製的效率高,這種方法涉及較少的步驟並提供更好的性能。
  4. 記憶體使用量:

    • iTextSharp: 建立多個 PdfDocument 實例將消耗更多記憶體。

    • IronPDF: 由於其簡化的方法,該方法在記憶體效率上更高。

結論

總結而言,iTextSharp 和 IronPDF 都提供了穩健的解決方案來用 C# 分割 PDF 文件,各有其優勢。 IronPDF 因其簡單性、可讀性以及由於更直接的方法可能帶來的更佳效能而脫穎而出。

尋求多功能性與易用性之間平衡的開發人員可能會發現IronPDF是一個具有吸引力的選擇。此外,IronPDF提供一個免費試用. 最終,選擇 iTextSharp 或 IronPDF 取決於個別專案需求和偏好的開發風格。

< 上一頁
PDFsharp 與 iTextSharp (C# PDF 函式庫比較)
下一個 >
IronPDF 與 PDFSharpCore 的比較

準備開始了嗎? 版本: 2024.12 剛剛發布

免費 NuGet 下載 總下載次數: 11,622,374 查看許可證 >