跳至頁尾內容
產品對比

IronPDF與PDFNet的比較

1. 引言

正在尋找適用於 .NET Framework 的完美 PDF 工具?

在本文中,我們將探討如何在 C#(最受歡迎的程式語言之一)中處理 PDF 檔案。 我們將討論兩款業界領先的基於 .NET Framework 的 C# PDF 工具,並使用程式碼範例根據它們的效能和功能對它們進行比較。 最後,我們將仔細研究他們的許可詳情,並學習如何取得許可證金鑰。

這兩個PDF庫分別是:

  • PDFNet
  • IronPDF

2. IronPDF

IronPDF 是由 Iron Software 開發的 C# .NET 程式庫,旨在透過一個程式庫解決 C# .NET 開發人員的所有 PDF 問題。 IronPDF 由 Chromium 引擎驅動,具有各種實用且強大的功能,例如將 HTML5、JavaScript、CSS 和圖像檔案轉換為 PDF,建立自訂頁首和頁腳,以及精確地顯示 PDF,就像它們在瀏覽器中顯示的那樣。 IronPDF 讓您可以從 PDF 檔案讀取數據,並自動插入您的 .NET 應用程式和資料儲存系統。 您可以將舊的 PDF 文件儲存中的內容匯入、移動和索引到您的文件管理和業務應用程式中。

2.1 IronPDF 功能

2.1.1. PDF轉換

此功能可讓您從各種格式(例如 HTML、MVC 視圖、Web 表單、HTML 字串和 URL)產生 PDF 檔案。

2.1.2. 擷取PDF內容

在許多情況下,您可以輕鬆地從 PDF 中提取嵌入文字。 但是,如果上述方法無效,則您的文字很可能嵌入在圖像中。 若要掃描文件以取得可視文字(而不是純文字),請使用IronOCR庫。

2.1.3 頁首和頁尾

建立 PDF 檔案時可以新增頁首和頁尾,也可以加入現有的 PDF 檔案中。 使用"列印選項"屬性,您可以為文件的每個頁面建立頁首和頁尾。 這些參數在 ChromePdfRenderer 物件中可用。 此範例在 .NET Core 控制台應用程式中運行。

2.1.4. PDF影像處理

這使用戶能夠從PDF中生成圖像,也能從照片生成PDF。它支援圖像提取、各種圖像擴展和PDF列印。

2.1.5. PDF 文件 I/O

IronPDF 還包括 128 位元 PDF 加密、密碼保護的 PDF 鎖定和 PDF 數位簽章。

2.1.6. PDF 編輯

IronPDF 工具可讓您為 PDF 文件添加浮水印、新增頁面、刪除頁面、背景、前景等等。

2.1.7. 相容性

IronPDF 支援幾乎所有與 C# 相容的作業系統和框架,例如:

  • Windows
  • .NET Core 2.1、3.0、3.1、.NET 6 和 5
  • 符合 .NET Standard 2.0 通用相容性要求
  • Azure
  • AWS Docker Linux

3. PDFNet

PDFTron 的 PDFNet .NET SDK 為 Web、行動裝置、桌面或伺服器上的任何框架或應用程式帶來精確的 PDF 處理、註釋、編輯和建立功能。 它利用您的基礎架構管理整個文件和資訊管理流程,無需依賴第三方伺服器。 PDFTron 的 Web 平台附帶一個支援該平台的 JS 版本,以及所有 PDF SDK 的演示許可證金鑰。

PDFNet 最顯著的優勢之一是它真正具有跨平台性,使用戶能夠輕鬆地將 PDF 相容性和相關的業務功能添加到其工作流程和應用程式中,跨越許多不同的行動和桌面環境,同時幾乎使用相同的介面。

3.1 PDFNet SDK 功能

3.1.1. 相容性

PDFNet SDK 與許多平台和框架相容。 為確保平台一致性,JavaScript API 的使用方式與 PDFNet API 相同。 該 SDK 還提供了 Node.js 和 Electron 版本。 此軟體包需要非託管的附加二進位。

3.1.2. 編輯與檢視

為線上、行動和桌面平台上的使用者帶來安全、可擴展、高保真的 PDF 閱讀和編輯功能。

3.1.3. 簽署

建立自訂簽署流程。 經數位簽署的文件可以進行認證、驗證和密封。

3.1.4. 真實編輯

從文件中刪除敏感數據,例如個人資訊或個人健康資訊,同時保持文件可搜尋性。

3.1.5. 頁面操作

頁面可以新增、刪除或重新排列。 文件可以進行彙編、合併或分割為多個部分。 在同一閱讀器中同時查看多個文檔,或並排查看多個文檔。

4. 在 Visual Studio 中建立新項目

在本文中,我們將使用控制台應用程式產生 PDF 文件。

開啟 Visual Studio 軟體,然後前往"檔案"選單。 選擇"新建專案",然後選擇控制台應用程式。

在對應的文字方塊中輸入項目名稱並選擇路徑。 然後,點擊創建按鈕。 選擇所需的 .NET 框架,如下圖所示:

A Comparison Between IronPDF and PDFNet, Figure 1

Visual Studio 專案現在將產生控制台應用程式的結構。 完成後,它將打開Program.cs文件,您可以在其中編寫和執行原始程式碼。

A Comparison Between IronPDF and PDFNet, Figure 2

現在我們可以添加庫並測試程式了。

5. 安裝 IronPDF 庫

IronPDF 庫可以透過四種不同的方式下載和安裝。 這些都是:

5.1 使用 Visual Studio NuGet 套件管理器

Visual Studio 軟體提供了 NuGet 套件管理器選項,可以直接將套件安裝到解決方案中。 下面這張截圖展示如何開啟 NuGet 套件管理器。

A Comparison Between IronPDF and PDFNet, Figure 3

開啟程式包管理器圖形使用者介面後,按一下"瀏覽"標籤並蒐尋"IronPDF:"。

A Comparison Between IronPDF and PDFNet, Figure 4

在上圖中,我們可以看到搜尋結果的相關軟體包清單。 選擇 IronPDF 選項並將軟體包安裝到我們的解決方案中。

5.2 使用 Visual Studio 命令列

  • 在 Visual Studio 功能表中,前往"工具">"NuGet 套件管理器">"套件管理器控制台"。
A Comparison Between IronPDF and PDFNet, Figure 5

  • 在軟體包管理器控制台標籤中輸入以下代碼:
Install-Package IronPdf

IronPDF 軟體包現在將安裝到專案中。

A Comparison Between IronPDF and PDFNet, Figure 6

5.3 從 NuGet 網頁直接下載

第三種方法是直接從NuGet Gallery IronPDF Package下載 NuGet 套件。

  • 從右側選單中選擇下載套件選項。
  • 雙擊下載的軟體包; 它會自動安裝。 接下來,重新載入解決方案,並在專案中開始使用它。

5.4 從 IronPDF 網頁直接下載

直接從IronPDF 下載頁面下載最新軟體包。 下載完成後,請按照以下步驟將軟體包新增至專案。

  • 在解決方案視窗中右鍵點選項目。 然後,選擇參考選項並瀏覽下載的參考檔案的位置。 接下來,按一下"確定"以新增引用。

6. 安裝 PDFNet SDK

PDFNet SDK 可以透過四種不同的方式下載和安裝。

  • 使用 Visual Studio NuGet 套件管理器。
  • 使用 Visual Studio 命令列。
  • NuGet Gallery PDFNet 套件直接下載。
  • 使用 PDFNetLoader.dll

6.1. 使用 Visual Studio NuGet 套件管理器

如上所述,在 Visual Studio 中開啟工具選單,然後開啟 NuGet 套件管理員。 將出現一個清單-點選"管理解決方案的 NuGet 套件"。

A Comparison Between IronPDF and PDFNet, Figure 7

將出現一個有搜尋欄的視窗。 搜尋 PDFNet 並將其安裝到專案中。

6.2. 使用 Visual Studio 命令列

  • 在 Visual Studio 功能表中,前往"工具">"NuGet 套件管理器">"套件管理器控制台"。
  • 在軟體包管理器控制台標籤中輸入以下代碼:
Install-Package PDFNet -Version 9.2.0
A Comparison Between IronPDF and PDFNet, Figure 8

6.3. 從 NuGet 網頁直接下載

第三種方法是直接從NuGet Gallery PDFNet Package下載 NuGet 套件。

  • 從右側選單中選擇下載套件選項。
  • 雙擊下載的軟體包開始安裝程序。

6.4. 使用 PDFNetLoader.dll

您也可以使用 PDFNetLoader.dll 檔案安裝 PDFNet API。您可以從GitHub Releases 下載 PDFNetLoader.dll 檔案

下載軟體包,將其放入專案的 bin 資料夾中,然後運行它。 在 Visual Studio 專案中,新增 PDFNetLoader.dll 作為參考。

Bootstrap 與 CSS 框架渲染

現代網頁應用程式大量依賴 Bootstrap 和 CSS 框架來實現一致、響應式的設計。 從網頁內容產生 PDF 時,無需修改即可準確渲染這些框架的能力對於保持設計一致性和減少開發工作量至關重要。

IronPDF:完全支援 Bootstrap 框架

Bootstrap 5:完整的 Flexbox 佈局系統、CSS Grid、實用類別以及所有元件庫 Bootstrap 4:完整的卡片元件、導航、彈性實用程式和響應式設計 Tailwind CSS:所有實用優先的類別都能以瀏覽器精確度渲染。 -基礎:完整的網格系統和組件支持 現代CSS3: Flexbox、CSS Grid、自訂屬性、動畫、轉換與變換

實際驗證:IronPDF 能夠以像素級的保真度渲染Bootstrap 主頁和所有官方範例

程式碼範例:學習管理系統儀錶板

using IronPdf;

// Set your IronPDF license key
IronPdf.License.LicenseKey = "License-Key goes here";

var renderer = new ChromePdfRenderer();
string bootstrapLMS = @"
<!DOCTYPE html>
<html>
<head>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
    <div class='container-fluid py-4'>
        <div class='d-flex justify-content-between align-items-center mb-4'>
            <div>
                <h1 class='display-6 mb-1'>Student Learning Dashboard</h1>
                <p class='text-muted mb-0'>Spring Semester 2025</p>
            </div>
            <span class='badge bg-success fs-5'>92% Overall Progress</span>
        </div>

        <div class='row g-4 mb-4'>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm border-primary'>
                    <div class='card-body'>
                        <div class='text-primary mb-2' style='font-size: 2rem;'>📚</div>
                        <h3 class='mb-1'>6/8</h3>
                        <p class='text-muted mb-0'>Courses Completed</p>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm border-success'>
                    <div class='card-body'>
                        <div class='text-success mb-2' style='font-size: 2rem;'>🎯</div>
                        <h3 class='mb-1'>24/28</h3>
                        <p class='text-muted mb-0'>Assignments Submitted</p>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm border-warning'>
                    <div class='card-body'>
                        <div class='text-warning mb-2' style='font-size: 2rem;'>⏱️</div>
                        <h3 class='mb-1'>48hrs</h3>
                        <p class='text-muted mb-0'>Study Time This Week</p>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm border-info'>
                    <div class='card-body'>
                        <div class='text-info mb-2' style='font-size: 2rem;'>⭐</div>
                        <h3 class='mb-1'>A- Average</h3>
                        <p class='text-muted mb-0'>Current GPA: 3.7</p>
                    </div>
                </div>
            </div>
        </div>

        <div class='row g-4'>
            <div class='col-md-8'>
                <div class='card shadow-sm'>
                    <div class='card-header bg-primary text-white'>
                        <h5 class='mb-0'>Current Courses</h5>
                    </div>
                    <div class='card-body p-0'>
                        <div class='list-group list-group-flush'>
                            <div class='list-group-item'>
                                <div class='d-flex justify-content-between align-items-center mb-2'>
                                    <div>
                                        <h6 class='mb-1'>Advanced Web Development</h6>
                                        <small class='text-muted'>Prof. Johnson | Mondays & Wednesdays, 2:00 PM</small>
                                    </div>
                                    <span class='badge bg-success'>Grade: A</span>
                                </div>
                                <div class='progress' style='height: 6px;'>
                                    <div class='progress-bar bg-success' style='width: 95%'></div>
                                </div>
                                <small class='text-muted'>95% Complete | Final Project Due: May 15</small>
                            </div>

                            <div class='list-group-item'>
                                <div class='d-flex justify-content-between align-items-center mb-2'>
                                    <div>
                                        <h6 class='mb-1'>Database Systems</h6>
                                        <small class='text-muted'>Prof. Chen | Tuesdays & Thursdays, 10:00 AM</small>
                                    </div>
                                    <span class='badge bg-primary'>Grade: A-</span>
                                </div>
                                <div class='progress' style='height: 6px;'>
                                    <div class='progress-bar bg-primary' style='width: 88%'></div>
                                </div>
                                <small class='text-muted'>88% Complete | Midterm: April 28</small>
                            </div>

                            <div class='list-group-item'>
                                <div class='d-flex justify-content-between align-items-center mb-2'>
                                    <div>
                                        <h6 class='mb-1'>Artificial Intelligence Fundamentals</h6>
                                        <small class='text-muted'>Prof. Martinez | Fridays, 1:00 PM</small>
                                    </div>
                                    <span class='badge bg-warning text-dark'>Grade: B+</span>
                                </div>
                                <div class='progress' style='height: 6px;'>
                                    <div class='progress-bar bg-warning' style='width: 75%'></div>
                                </div>
                                <small class='text-muted'>75% Complete | Research Paper Due: May 5</small>
                            </div>

                            <div class='list-group-item'>
                                <div class='d-flex justify-content-between align-items-center mb-2'>
                                    <div>
                                        <h6 class='mb-1'>Computer Networks</h6>
                                        <small class='text-muted'>Prof. Davis | Mondays & Wednesdays, 4:00 PM</small>
                                    </div>
                                    <span class='badge bg-success'>Grade: A</span>
                                </div>
                                <div class='progress' style='height: 6px;'>
                                    <div class='progress-bar bg-success' style='width: 92%'></div>
                                </div>
                                <small class='text-muted'>92% Complete | Lab Exam: April 30</small>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='card shadow-sm mb-3'>
                    <div class='card-header bg-warning text-dark'>
                        <h5 class='mb-0'>Upcoming Deadlines</h5>
                    </div>
                    <div class='card-body p-0'>
                        <ul class='list-group list-group-flush'>
                            <li class='list-group-item'>
                                <div class='d-flex align-items-start'>
                                    <span class='badge bg-danger me-2'>Today</span>
                                    <div class='flex-grow-1'>
                                        <small><strong>AI Assignment 4</strong></small>
                                        <br><small class='text-muted'>Neural Networks Lab</small>
                                    </div>
                                </div>
                            </li>
                            <li class='list-group-item'>
                                <div class='d-flex align-items-start'>
                                    <span class='badge bg-warning text-dark me-2'>Apr 28</span>
                                    <div class='flex-grow-1'>
                                        <small><strong>Database Midterm</strong></small>
                                        <br><small class='text-muted'>Chapters 1-8</small>
                                    </div>
                                </div>
                            </li>
                            <li class='list-group-item'>
                                <div class='d-flex align-items-start'>
                                    <span class='badge bg-info me-2'>Apr 30</span>
                                    <div class='flex-grow-1'>
                                        <small><strong>Networks Lab Exam</strong></small>
                                        <br><small class='text-muted'>Practical Assessment</small>
                                    </div>
                                </div>
                            </li>
                            <li class='list-group-item'>
                                <div class='d-flex align-items-start'>
                                    <span class='badge bg-primary me-2'>May 5</span>
                                    <div class='flex-grow-1'>
                                        <small><strong>AI Research Paper</strong></small>
                                        <br><small class='text-muted'>15-20 pages</small>
                                    </div>
                                </div>
                            </li>
                        </ul>
                    </div>
                </div>

                <div class='card shadow-sm'>
                    <div class='card-header bg-info text-white'>
                        <h5 class='mb-0'>Study Resources</h5>
                    </div>
                    <div class='card-body'>
                        <div class='d-grid gap-2'>
                            <button class='btn btn-outline-primary btn-sm'>📖 Course Materials</button>
                            <button class='btn btn-outline-primary btn-sm'>💬 Discussion Forums</button>
                            <button class='btn btn-outline-primary btn-sm'>🎥 Recorded Lectures</button>
                            <button class='btn btn-outline-primary btn-sm'>📝 Practice Quizzes</button>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(bootstrapLMS);
pdf.SaveAs("lms-dashboard.pdf");
using IronPdf;

// Set your IronPDF license key
IronPdf.License.LicenseKey = "License-Key goes here";

var renderer = new ChromePdfRenderer();
string bootstrapLMS = @"
<!DOCTYPE html>
<html>
<head>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
    <div class='container-fluid py-4'>
        <div class='d-flex justify-content-between align-items-center mb-4'>
            <div>
                <h1 class='display-6 mb-1'>Student Learning Dashboard</h1>
                <p class='text-muted mb-0'>Spring Semester 2025</p>
            </div>
            <span class='badge bg-success fs-5'>92% Overall Progress</span>
        </div>

        <div class='row g-4 mb-4'>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm border-primary'>
                    <div class='card-body'>
                        <div class='text-primary mb-2' style='font-size: 2rem;'>📚</div>
                        <h3 class='mb-1'>6/8</h3>
                        <p class='text-muted mb-0'>Courses Completed</p>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm border-success'>
                    <div class='card-body'>
                        <div class='text-success mb-2' style='font-size: 2rem;'>🎯</div>
                        <h3 class='mb-1'>24/28</h3>
                        <p class='text-muted mb-0'>Assignments Submitted</p>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm border-warning'>
                    <div class='card-body'>
                        <div class='text-warning mb-2' style='font-size: 2rem;'>⏱️</div>
                        <h3 class='mb-1'>48hrs</h3>
                        <p class='text-muted mb-0'>Study Time This Week</p>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm border-info'>
                    <div class='card-body'>
                        <div class='text-info mb-2' style='font-size: 2rem;'>⭐</div>
                        <h3 class='mb-1'>A- Average</h3>
                        <p class='text-muted mb-0'>Current GPA: 3.7</p>
                    </div>
                </div>
            </div>
        </div>

        <div class='row g-4'>
            <div class='col-md-8'>
                <div class='card shadow-sm'>
                    <div class='card-header bg-primary text-white'>
                        <h5 class='mb-0'>Current Courses</h5>
                    </div>
                    <div class='card-body p-0'>
                        <div class='list-group list-group-flush'>
                            <div class='list-group-item'>
                                <div class='d-flex justify-content-between align-items-center mb-2'>
                                    <div>
                                        <h6 class='mb-1'>Advanced Web Development</h6>
                                        <small class='text-muted'>Prof. Johnson | Mondays & Wednesdays, 2:00 PM</small>
                                    </div>
                                    <span class='badge bg-success'>Grade: A</span>
                                </div>
                                <div class='progress' style='height: 6px;'>
                                    <div class='progress-bar bg-success' style='width: 95%'></div>
                                </div>
                                <small class='text-muted'>95% Complete | Final Project Due: May 15</small>
                            </div>

                            <div class='list-group-item'>
                                <div class='d-flex justify-content-between align-items-center mb-2'>
                                    <div>
                                        <h6 class='mb-1'>Database Systems</h6>
                                        <small class='text-muted'>Prof. Chen | Tuesdays & Thursdays, 10:00 AM</small>
                                    </div>
                                    <span class='badge bg-primary'>Grade: A-</span>
                                </div>
                                <div class='progress' style='height: 6px;'>
                                    <div class='progress-bar bg-primary' style='width: 88%'></div>
                                </div>
                                <small class='text-muted'>88% Complete | Midterm: April 28</small>
                            </div>

                            <div class='list-group-item'>
                                <div class='d-flex justify-content-between align-items-center mb-2'>
                                    <div>
                                        <h6 class='mb-1'>Artificial Intelligence Fundamentals</h6>
                                        <small class='text-muted'>Prof. Martinez | Fridays, 1:00 PM</small>
                                    </div>
                                    <span class='badge bg-warning text-dark'>Grade: B+</span>
                                </div>
                                <div class='progress' style='height: 6px;'>
                                    <div class='progress-bar bg-warning' style='width: 75%'></div>
                                </div>
                                <small class='text-muted'>75% Complete | Research Paper Due: May 5</small>
                            </div>

                            <div class='list-group-item'>
                                <div class='d-flex justify-content-between align-items-center mb-2'>
                                    <div>
                                        <h6 class='mb-1'>Computer Networks</h6>
                                        <small class='text-muted'>Prof. Davis | Mondays & Wednesdays, 4:00 PM</small>
                                    </div>
                                    <span class='badge bg-success'>Grade: A</span>
                                </div>
                                <div class='progress' style='height: 6px;'>
                                    <div class='progress-bar bg-success' style='width: 92%'></div>
                                </div>
                                <small class='text-muted'>92% Complete | Lab Exam: April 30</small>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='card shadow-sm mb-3'>
                    <div class='card-header bg-warning text-dark'>
                        <h5 class='mb-0'>Upcoming Deadlines</h5>
                    </div>
                    <div class='card-body p-0'>
                        <ul class='list-group list-group-flush'>
                            <li class='list-group-item'>
                                <div class='d-flex align-items-start'>
                                    <span class='badge bg-danger me-2'>Today</span>
                                    <div class='flex-grow-1'>
                                        <small><strong>AI Assignment 4</strong></small>
                                        <br><small class='text-muted'>Neural Networks Lab</small>
                                    </div>
                                </div>
                            </li>
                            <li class='list-group-item'>
                                <div class='d-flex align-items-start'>
                                    <span class='badge bg-warning text-dark me-2'>Apr 28</span>
                                    <div class='flex-grow-1'>
                                        <small><strong>Database Midterm</strong></small>
                                        <br><small class='text-muted'>Chapters 1-8</small>
                                    </div>
                                </div>
                            </li>
                            <li class='list-group-item'>
                                <div class='d-flex align-items-start'>
                                    <span class='badge bg-info me-2'>Apr 30</span>
                                    <div class='flex-grow-1'>
                                        <small><strong>Networks Lab Exam</strong></small>
                                        <br><small class='text-muted'>Practical Assessment</small>
                                    </div>
                                </div>
                            </li>
                            <li class='list-group-item'>
                                <div class='d-flex align-items-start'>
                                    <span class='badge bg-primary me-2'>May 5</span>
                                    <div class='flex-grow-1'>
                                        <small><strong>AI Research Paper</strong></small>
                                        <br><small class='text-muted'>15-20 pages</small>
                                    </div>
                                </div>
                            </li>
                        </ul>
                    </div>
                </div>

                <div class='card shadow-sm'>
                    <div class='card-header bg-info text-white'>
                        <h5 class='mb-0'>Study Resources</h5>
                    </div>
                    <div class='card-body'>
                        <div class='d-grid gap-2'>
                            <button class='btn btn-outline-primary btn-sm'>📖 Course Materials</button>
                            <button class='btn btn-outline-primary btn-sm'>💬 Discussion Forums</button>
                            <button class='btn btn-outline-primary btn-sm'>🎥 Recorded Lectures</button>
                            <button class='btn btn-outline-primary btn-sm'>📝 Practice Quizzes</button>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(bootstrapLMS);
pdf.SaveAs("lms-dashboard.pdf");
$vbLabelText   $csharpLabel

輸出:採用 Bootstrap 5 網格系統、卡片組件、進度條、徽章、flexbox 佈局和列表組的專業學習管理系統 PDF——所有元素均以完美的間距、排版和色彩準確性呈現。

PDFNet(Apryse):部分支援現代 CSS

PDFNet 使用自訂 HTML 渲染引擎,並選擇性地支援 CSS3:

  • Flexbox 實作有限: Bootstrap 4/5 基於 Flexbox 的佈局可能渲染不一致 -部分 CSS Grid 支援:基於網格的設計通常需要備用方案
  • JavaScript 限制:與完整的瀏覽器環境相比,執行量最小 -框架測試是必需的: Bootstrap 元件在投入生產環境之前需要進行驗證。

開發影響:團隊必須單獨測試每個 Bootstrap 元件,並且經常為 PDFNet 創建簡化的佈局或替代 CSS,這增加了複雜性並降低了設計一致性。

有關 Bootstrap 框架的全面指導和現代 CSS 渲染功能,請參閱Bootstrap 和 Flexbox CSS 指南

7. 列印 PDF 檔案(程式碼範例)

對於處理 PDF 文件的現代應用程式來說,列印 PDF 文件是一項必備功能。 在這裡,我們將討論如何使用這兩種工具列印 PDF 文件。

7.1. 使用 IronPDF 列印 PDF 文件

IronPDF 透過將 PDF 檔案傳送到電腦的預設印表機來列印該檔案。 這將打開 Windows 列印介面——只需點擊列印按鈕即可完成列印。

using IronPdf;

class PrintPDF
{
    static void Main(string[] args)
    {
        // Create a new PDF and print it
        var Renderer = new IronPdf.ChromePdfRenderer();
        PdfDocument Pdf = Renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");

        // Send the PDF to the default printer to print
        Pdf.Print(300, false);
    }
}
using IronPdf;

class PrintPDF
{
    static void Main(string[] args)
    {
        // Create a new PDF and print it
        var Renderer = new IronPdf.ChromePdfRenderer();
        PdfDocument Pdf = Renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");

        // Send the PDF to the default printer to print
        Pdf.Print(300, false);
    }
}
$vbLabelText   $csharpLabel

7.2. 使用 PDFNet 列印 PDF 文件

PDFTron 的 PDFNet SDK 也提供列印功能。 以下是 PDFNet 中用於列印 PDF 檔案的原始程式碼片段。

using System;
using pdftron;
using pdftron.PDF;
using pdftron.Common;
using pdftron.Filters;

namespace PDFPrintTestCS
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Opening the input file...");
            using (PDFDoc pdfdoc = new PDFDoc("tiger.pdf"))
            {
                pdfdoc.InitSecurityHandler();
                Console.WriteLine("Printing the input file using PDF.Print.StartPrintJob...");
                PrinterMode printerMode = new PrinterMode();
                printerMode.SetAutoCenter(true);
                printerMode.SetAutoRotate(true);
                printerMode.SetCollation(true);
                printerMode.SetCopyCount(1);
                printerMode.SetDPI(300); // Set print quality to 300 DPI
                printerMode.SetDuplexing(PrinterMode.DuplexMode.e_Duplex_Auto);
                printerMode.SetNUp(PrinterMode.NUp.e_NUp_1_1, PrinterMode.NUpPageOrder.e_PageOrder_LeftToRightThenTopToBottom);
                printerMode.SetOrientation(PrinterMode.Orientation.e_Orientation_Portrait);
                printerMode.SetOutputAnnot(PrinterMode.PrintContentTypes.e_PrintContent_DocumentAndAnnotations);
                printerMode.SetOutputColor(PrinterMode.OutputColor.e_OutputColor_Grayscale);
                printerMode.SetOutputPageBorder(false);
                printerMode.SetOutputQuality(PrinterMode.OutputQuality.e_OutputQuality_Medium);
                printerMode.SetPaperSize(new Rect(0, 0, 612, 792));
                PageSet pagesToPrint = new PageSet(1, pdfdoc.GetPageCount(), PageSet.Filter.e_all);
                Print.StartPrintJob(pdfdoc, "", pdfdoc.GetFileName(), "", pagesToPrint, printerMode, null);
            }
        }
    }
}
using System;
using pdftron;
using pdftron.PDF;
using pdftron.Common;
using pdftron.Filters;

namespace PDFPrintTestCS
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Opening the input file...");
            using (PDFDoc pdfdoc = new PDFDoc("tiger.pdf"))
            {
                pdfdoc.InitSecurityHandler();
                Console.WriteLine("Printing the input file using PDF.Print.StartPrintJob...");
                PrinterMode printerMode = new PrinterMode();
                printerMode.SetAutoCenter(true);
                printerMode.SetAutoRotate(true);
                printerMode.SetCollation(true);
                printerMode.SetCopyCount(1);
                printerMode.SetDPI(300); // Set print quality to 300 DPI
                printerMode.SetDuplexing(PrinterMode.DuplexMode.e_Duplex_Auto);
                printerMode.SetNUp(PrinterMode.NUp.e_NUp_1_1, PrinterMode.NUpPageOrder.e_PageOrder_LeftToRightThenTopToBottom);
                printerMode.SetOrientation(PrinterMode.Orientation.e_Orientation_Portrait);
                printerMode.SetOutputAnnot(PrinterMode.PrintContentTypes.e_PrintContent_DocumentAndAnnotations);
                printerMode.SetOutputColor(PrinterMode.OutputColor.e_OutputColor_Grayscale);
                printerMode.SetOutputPageBorder(false);
                printerMode.SetOutputQuality(PrinterMode.OutputQuality.e_OutputQuality_Medium);
                printerMode.SetPaperSize(new Rect(0, 0, 612, 792));
                PageSet pagesToPrint = new PageSet(1, pdfdoc.GetPageCount(), PageSet.Filter.e_all);
                Print.StartPrintJob(pdfdoc, "", pdfdoc.GetFileName(), "", pagesToPrint, printerMode, null);
            }
        }
    }
}
$vbLabelText   $csharpLabel

8. 從 HTML 產生 PDF

這兩個函式庫都具備 HTML 轉 PDF 的功能,但方法略有不同。

8.1. 使用 IronPDF 從 HTML 產生 PDF

IronPDF 不需要使用 JSON 或加密機制。 IronPDF 支援多種方法。 例如:

HTML 檔案轉 PDF

using IronPdf;

class HtmlToPdf
{
    static void Main(string[] args)
    {
        var Renderer = new IronPdf.ChromePdfRenderer();
        Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>").SaveAs("pixel-perfect.pdf");
    }
}
using IronPdf;

class HtmlToPdf
{
    static void Main(string[] args)
    {
        var Renderer = new IronPdf.ChromePdfRenderer();
        Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>").SaveAs("pixel-perfect.pdf");
    }
}
$vbLabelText   $csharpLabel

PDF檔案的URL

using IronPdf;

class UrlToPdf
{
    static void Main(string[] args)
    {
        IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
        var Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/");
        Pdf.SaveAs("url.pdf");
    }
}
using IronPdf;

class UrlToPdf
{
    static void Main(string[] args)
    {
        IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
        var Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/");
        Pdf.SaveAs("url.pdf");
    }
}
$vbLabelText   $csharpLabel
A Comparison Between IronPDF and PDFNet, Figure 9

8.2. 使用 PDFNet 從 HTML 產生 PDF

PDFNet 也提供 HTML 轉 PDF 功能,支援頁面轉換和 URL 轉換。 由於程式碼很長,我們這裡只給一個範例。

class HTML2PDFSample
{
    private static pdftron.PDFNetLoader pdfNetLoader = pdftron.PDFNetLoader.Instance();
    static HTML2PDFSample() {}

    static void Main(string[] args)
    {
        string output_path = "../../../../TestFiles/Output/html2pdf_example";
        string host = "https://www.pdftron.com";
        HTML2PDF.SetModulePath("../../../../../Lib");

        if (!HTML2PDF.IsModuleAvailable())
        {
            Console.WriteLine();
            Console.WriteLine("Unable to run HTML2PDFTest: PDFTron SDK HTML2PDF module not available.");
            return;
        }

        try
        {
            using (PDFDoc doc = new PDFDoc())
            {
                if (HTML2PDF.Convert(doc, host + "/"))
                    doc.Save(output_path + "_01.pdf", SDFDoc.SaveOptions.e_linearized);
                else
                    Console.WriteLine("Conversion failed.");
            }
        }
        catch (PDFNetException e)
        {
            Console.WriteLine(e.Message);
        }
    }
}
class HTML2PDFSample
{
    private static pdftron.PDFNetLoader pdfNetLoader = pdftron.PDFNetLoader.Instance();
    static HTML2PDFSample() {}

    static void Main(string[] args)
    {
        string output_path = "../../../../TestFiles/Output/html2pdf_example";
        string host = "https://www.pdftron.com";
        HTML2PDF.SetModulePath("../../../../../Lib");

        if (!HTML2PDF.IsModuleAvailable())
        {
            Console.WriteLine();
            Console.WriteLine("Unable to run HTML2PDFTest: PDFTron SDK HTML2PDF module not available.");
            return;
        }

        try
        {
            using (PDFDoc doc = new PDFDoc())
            {
                if (HTML2PDF.Convert(doc, host + "/"))
                    doc.Save(output_path + "_01.pdf", SDFDoc.SaveOptions.e_linearized);
                else
                    Console.WriteLine("Conversion failed.");
            }
        }
        catch (PDFNetException e)
        {
            Console.WriteLine(e.Message);
        }
    }
}
$vbLabelText   $csharpLabel
A Comparison Between IronPDF and PDFNet, Figure 10

9. 許可

IronPDF是一個提供免費開發者許可的庫。 IronPDF 也提供特殊的定價結構:輕量級套餐起價為$799 ,沒有任何隱藏費用。 SaaS 和 OEM 產品也可以重新分發。 所有許可證均包含 30 天退款保證、一年的軟體支援和升級、開發/測試/預發布/生產有效期以及永久許可證(一次性購買)。 IronPDF 授權可為使用者需求提供最佳效能。 請造訪IronPDF 許可頁面,查看 IronPDF 的完整定價結構和許可資訊。

A Comparison Between IronPDF and PDFNet, Figure 11

PDFTron PDFNet SDK 提供多種授權選項,可根據您的業務需求量身訂做。 企業版和 OEM 版分發附帶三種類型的授權。 企業版許可證僅供組織內部使用,不可用於應用程式分發。 許可證中還包含需要存取檔案系統的其他 API。 所有許可證均附有許可證密鑰。 三種許可證類型是:

  • 檢視器
  • 檢視器和註釋
  • 核心 SDK

有關其許可結構的更多信息,請訪問PDFTron 許可資訊頁面

10. 結論

IronPDF 提供了許多用於處理 PDF 文件並將其轉換為不同格式的功能。 HTML 轉換為 PDF 時,產生的檔案為向量格式,適用於高品質的商業印刷。 因此,您將收到一份清晰、高品質的PDF文件。 許可證和定價資訊可在網站上找到。

與 IronPDF 類似,PDFNet 可以幫助使用者進行 PDF 文件的轉換、註釋、簽名、填寫、轉換和編輯。 它支援多種平台,包括 Windows、iOS、Android、WEB 和 Linux。 生產環境中使用 PDFNet SDK 需要產品金鑰。

IronPDF 的許可證以開發者為中心,這意味著您必須根據有多少開發者將使用該產品來獲得許可證。 另一方面,PDFNet 許可證的工作方式不同,它採用的是基於功能的許可證。 這意味著您必須獲得支援所需功能的許可證。 IronPDF 許可證包含所有開箱即用的功能。 使用 PDFNet 時,某些功能(例如文件轉換)需要作為附加功能購買。

IronPDF 庫以有條理的方式提供各種功能,使編寫程式碼變得容易,只需幾行程式碼即可執行大型任務。 Iron Software 目前以兩款工具的價格提供五款工具的套裝。 Iron Suite包含的工具有:

請造訪Iron Suite 資訊頁面以了解 Iron Suite

請注意PDFTron 是其各自所有者的註冊商標。 本網站與 PDFTron 無任何關聯,亦未獲得其認可或贊助。 所有產品名稱、標誌和品牌均為其各自所有者的財產。 文中比較僅供參考,反映的是撰寫本文時可公開取得的資訊。

常見問題解答

文章中比較的主要PDF庫有哪些?

本文比較了 Iron Software 開發的 IronPDF 和 PDFTron 開發的 PDFNet,重點關注它們在 .NET Framework 中為 C# 開發人員提供的功能。

如何在C#中將HTML轉換為PDF?

您可以使用 IronPDF 的RenderHtmlAsPdf方法將 HTML 字串轉換為 PDF。此外,您還可以使用 IronPDF 強大的 Chromium 引擎將 HTML 檔案和 URL 轉換為 PDF。

IronPDF 支援哪些作業系統?

IronPDF 支援多種作業系統,包括 Windows、Azure 和 Docker,可無縫整合到各種開發環境中。

IronPDF如何處理PDF資料擷取?

IronPDF 能夠有效地提取 PDF 數據,使開發人員能夠輕鬆地從 PDF 文件中檢索文字和圖像以進行進一步處理。

IronPDF有哪些安裝選項?

IronPDF 可以透過 Visual Studio NuGet 套件管理器、Visual Studio 命令列或直接從 NuGet Gallery 安裝,確保開發人員可以輕鬆設定。

IronPDF 和 PDFNet 的授權協議有何不同?

IronPDF 提供以開發者為中心的許可證,包含所有功能;而 PDFNet 許可證是基於功能的,可能需要額外購買特定功能。

IronPDF 是否適合處理大型 PDF 檔案?

是的,IronPDF 因其易用性和極少的程式碼要求而備受讚譽,使其能夠有效率地處理大型 PDF 任務。

Iron Software 套件中還包含哪些其他工具?

Iron 軟體套件包括 IronBarcode、IronXL、IronOCR、IronPDF 和 IronWebscraper,以套裝形式提供,增強了其對開發人員的吸引力。

柯蒂斯·週
技術撰稿人

Curtis Chau擁有卡爾頓大學電腦科學學士學位,專長於前端開發,精通Node.js、TypeScript、JavaScript和React。他熱衷於打造直覺美觀的使用者介面,喜歡使用現代框架,並擅長撰寫結構清晰、視覺效果出色的使用者手冊。

除了開發工作之外,柯蒂斯對物聯網 (IoT) 也抱有濃厚的興趣,致力於探索硬體和軟體整合的創新方法。閒暇時,他喜歡玩遊戲和製作 Discord 機器人,將他對科技的熱愛與創造力結合。