產品比較 IronPDF與PDFNet的比較 Curtis Chau 更新日期:7月 28, 2025 Download IronPDF NuGet 下載 DLL 下載 Windows 安裝程式 Start Free Trial Copy for LLMs Copy for LLMs Copy page as Markdown for LLMs Open in ChatGPT Ask ChatGPT about this page Open in Gemini Ask Gemini about this page Open in Grok Ask Grok about this page Open in Perplexity Ask Perplexity about this page Share Share on Facebook Share on X (Twitter) Share on LinkedIn Copy URL Email article 1. 介紹 正在尋找適合 .NET Framework 的完美 PDF 工具嗎? 在本文中,我們將了解如何使用 C#(最受歡迎的編程語言之一)處理 PDF 文件。 我們將通過代碼範例比較它們基於性能和功能的兩個行業領先的 C# .NET Framework PDF 工具。 最後,我們將查看他們的許可證詳細信息並了解如何獲取許可證密鑰。 這兩個 PDF 庫是: PDFNet IronPDF 2. IronPDF IronPDF 是由 Iron Software 開發的一個 C# .NET 庫,用於解決 C# .NET 開發人員所有的 PDF 問題,使用一個單一的庫。 IronPDF 憑藉 Chromium 引擎驅動,擁有各種有用且強大的功能,如將 HTML5、JavaScript、CSS 和圖像文件轉換為 PDF,創建自定義頁眉和頁腳,並準確顯示與瀏覽器中相同的 PDFs。 IronPDF 可以自動從 PDF 文件讀取數據並將其插入到您的 .NET 應用程序和數據存儲系統中。 您可以將舊的 PDF 文檔存儲中的內容導入、移動並索引到您的文檔管理和業務應用程序中。 2.1. IronPDF 功能 2.1.1. PDF 轉換 此功能允許您從多種格式生成 PDF 文件,例如 HTML、MVC 視圖、Web Forms、HTML 字串和 URL。 2.1.2. 提取 PDF 內容 在許多情況下,您可以輕鬆地從 PDF 中提取嵌入文本。 但是,如果失敗,您的文本很可能嵌入在圖像中。 要掃描文檔中的視覺文本而不是純文本,請使用 IronOCR 庫。 2.1.3 頭部和尾部 可以在創建 PDF 時或向現有的 PDFs 添加頁眉和頁腳。 使用列印選項屬性,您可以為每個文檔頁面創建頁眉和頁腳。 這些參數可在 ChromePdfRenderer 對象上使用。 此示例運行在 .NET Core 控制台應用中。 2.1.4. PDF 圖像處理 這使用戶能夠從 PDF 生成圖像以及從照片中生成 PDFs。 它支持圖像提取、各種圖像擴展和 PDF 列印。 2.1.5. PDF 文檔 IO IronPDF 還包括 128-bit PDF 加密、密碼保護 PDF 鎖定和 PDF 的数字签名。 2.1.6. PDF 編輯 IronPDF 工具允許您添加水印、添加頁面、刪除頁面、背景、前景以及對您的PDFs做更多操作。 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 為任何網絡、移動、桌面或服務器上的框架或應用程序帶來精確的 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. 編輯和查看 將安全、可擴展和高保真度的閱讀和編輯能力帶給在線、移動和桌面平台的用戶。 3.1.3. 簽名 創建自定義簽名程序。 數字簽名的文檔可認證、驗證和密封。 3.1.4. 真正的刪除 從文檔中刪除敏感數據,例如個人信息或個人健康信息,同時保持文檔可搜索。 3.1.5. 頁面操作 可以添加、刪除或重新排列頁面。 文檔可以組裝、合併或分成部分。 在同一讀取器中同時查看多個文檔或並排查看。 4. 在 Visual Studio 中創建新專案 在本文中,我們將使用控制台應用程序來生成 PDF 文檔。 打開 Visual Studio 軟件,然後轉到「文件」菜單。 選擇“新建項目”,然後選擇控制台應用程序。 輸入項目名稱並在適當的文本框中選擇路徑。 然後,單擊創建按鈕。 選擇所需的 .NET 框架,如下面的截圖所示: class="content-img-align-center"> class="center-image-wrapper"> Visual Studio 項目現在將生成控制台應用程序的結構。 完成後,它將打開 Program.cs 文件,在其中您可以編寫和執行源代碼。 class="content-img-align-center"> class="center-image-wrapper"> 現在我們可以添加庫並測試程序。 5. 安裝 IronPDF 庫 IronPDF 庫可以通過四種不同的方式下載和安裝。 這些是: 使用 Visual Studio NuGet 套件管理器 使用 Visual Studio 命令行。 從 NuGet Gallery IronPDF 包 直接下載。 從 IronPDF 下載頁面直接下載。 5.1 使用 Visual Studio NuGet 套件管理器 Visual Studio 軟件提供 NuGet 包管理器選項,允許將包直接安裝到解決方案中。 下面的截圖顯示了如何打開 NuGet 包管理器。 class="content-img-align-center"> class="center-image-wrapper"> 打開包管理器 GUI,單擊“瀏覽”選項卡並搜索“IronPDF:” class="content-img-align-center"> class="center-image-wrapper"> 在上圖中,我們可以看到搜尋到的相關套件列表。 選擇 IronPDF 選項並安裝我們解決方案的包。 5.2 使用 Visual Studio 命令行 在 Visual Studio 菜單中,轉到 工具 > NuGet 包管理器 > 包管理器控制台 class="content-img-align-center"> class="center-image-wrapper"> 在套件管理器控制台選項卡中輸入以下行: Install-Package IronPdf IronPDF 包現在將被安裝在項目中。 class="content-img-align-center"> class="center-image-wrapper"> 5.3 從 NuGet 網頁直接下載 第三種方法是從 NuGet Gallery IronPDF 包 直接下載 NuGet 包。 從右側菜單中選擇下載包的選項。 雙擊下載的套件; 它將自動安裝。 接下來,重新加載解決方案並開始在項目中使用它。 5.4 從 IronPDF 網頁直接下載 從 IronPDF 下載頁面直接下載最新的包。 下載後,按照以下步驟將包添加到項目中。 從解決方案窗口中右鍵單擊項目。 然後,選擇參考選項並瀏覽下載的參考的位置。 接下來,點擊 OK 添加參考。 6. 安裝 PDFNet SDK PDFNet SDK 可以通過四種不同的方式下載和安裝。 使用 Visual Studio NuGet 套件管理器. 使用 Visual Studio 命令行。 從 NuGet Gallery PDFNet 包 直接下載。 使用 PDFNetLoader.dll 6.1. 使用 Visual Studio NuGet 包管理器 如上所述,在 Visual Studio 中轉到工具並打開 NuGet 包管理器。 將出現一個列表——點擊管理解決方案的 NuGet 包。 class="content-img-align-center"> class="center-image-wrapper"> 將出現一個帶有搜索欄的窗口。 搜索 PDFNet 並在項目中安裝它。 6.2. 使用 Visual Studio 命令行 在 Visual Studio 菜單中,轉到 工具 > NuGet 包管理器 > 包管理器控制台 在套件管理器控制台選項卡中輸入以下行: Install-Package PDFNet -Version 9.2.0 class="content-img-align-center"> class="center-image-wrapper"> 6.3. 從 NuGet 頁面直接下載 第三種方法是從 NuGet Gallery PDFNet 包直接下載 NuGet 包。 從右側菜單中選擇下載包選擇。 雙擊下載的包以開始安裝過程。 6.4. 使用 PDFNetLoader.dll 您還可以使用 PDFNetLoader.dll 文件安裝 PDFNet API。 從 GitHub Releases for PDFNetLoader.dll 下載它。 下載包,將其放置在項目的 bin 文件中並運行它。 在您的 Visual Studio 項目中,將 PDFNetLoader.dll 添加為引用。 Bootstrap 和 CSS 框架呈現 現代 Web 應用程序高度依賴於 Bootstrap 和 CSS 框架以實現一致的響應設計。 從 Web 內容生成 PDF 時,準確呈現這些框架而不修改是保持設計一致性和減少開發工作量的關鍵。 IronPDF:完整的 Bootstrap 框架支持 Bootstrap 5: 全靈活框佈局系統、CSS 網格、實用類和所有組件庫 Bootstrap 4: 完整的卡片組件、導航、靈活實用工具和響應設計 Tailwind CSS: 所有實用程序優先類以瀏覽器準確度呈現 Foundation:完整的網格系統和組件支持 現代 CSS3: Flexbox、CSS 網格、自定義屬性、動畫、過渡和變換 Real-world validation: IronPDF renders the Bootstrap homepage and all official examples with pixel-perfect fidelity. 代碼示例:學習管理系統儀表板 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"); IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 輸出: 專業學習管理系統 PDF,具有 Bootstrap 5 的網格系統、卡片組件、進度條、徽章、flexbox 布局和列表組——所有呈現都具有完美間距、排版和顏色準確性。 PDFNet (Apryse): 部分現代 CSS 支持 PDFNet 使用自定義 HTML 渲染引擎,支持選擇性的 CSS3: 有限的 flexbox 實現: Bootstrap 4/5 基於 flex 的佈局可能呈現不一致 部分 CSS 網格支持: 基於網格的設計通常需要備用方案 JavaScript 限制: 與完整的瀏覽器環境相比,執行較少 需要框架測試: 需要在生產使用前驗證 Bootstrap 組件 開發影響: 團隊必須單獨測試每個 Bootstrap 組件,並經常為 PDFNet 創建簡化的佈局或替代 CSS,增加了複雜性並減少了設計的一致性。 如需綜合的 Bootstrap 框架指南和現代 CSS 渲染能力,請參見 Bootstrap & Flexbox CSS 指南。 7. 列印 PDF 文件(代碼示例) 列印 PDF 文件是現代應用程序處理 PDFs 的必備功能。 在這裡,我們將討論如何使用這兩種工具列印 PDF 文件。 7.1. 使用 IronPDF 列印 PDF 文件 IronPDF 透過將 PDF 發送到計算機的默認列印機來列印 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); } } Imports IronPdf Friend Class PrintPDF Shared Sub Main(ByVal args() As String) ' Create a new PDF and print it Dim Renderer = New IronPdf.ChromePdfRenderer() Dim Pdf As PdfDocument = Renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf") ' Send the PDF to the default printer to print Pdf.Print(300, False) End Sub End Class $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); } } } } Imports System Imports pdftron Imports pdftron.PDF Imports pdftron.Common Imports pdftron.Filters Namespace PDFPrintTestCS Friend Class Program Shared Sub Main(ByVal args() As String) Console.WriteLine("Opening the input file...") Using pdfdoc As New PDFDoc("tiger.pdf") pdfdoc.InitSecurityHandler() Console.WriteLine("Printing the input file using PDF.Print.StartPrintJob...") Dim printerMode As 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)) Dim pagesToPrint As New PageSet(1, pdfdoc.GetPageCount(), PageSet.Filter.e_all) Print.StartPrintJob(pdfdoc, "", pdfdoc.GetFileName(), "", pagesToPrint, printerMode, Nothing) End Using End Sub End Class End Namespace $vbLabelText $csharpLabel 8. 從 HTML 創建 PDFs 這兩個庫都具有 HTML 到 PDF 的轉換能力,但方法略有不同。 8.1. 使用 IronPDF 從 HTML 創建 PDFs 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"); } } Imports IronPdf Friend Class HtmlToPdf Shared Sub Main(ByVal args() As String) Dim Renderer = New IronPdf.ChromePdfRenderer() Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>").SaveAs("pixel-perfect.pdf") End Sub End Class $vbLabelText $csharpLabel 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"); } } 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"); } } Imports IronPdf Friend Class UrlToPdf Shared Sub Main(ByVal args() As String) Dim Renderer As New IronPdf.ChromePdfRenderer() Dim Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/") Pdf.SaveAs("url.pdf") End Sub End Class $vbLabelText $csharpLabel class="content-img-align-center"> class="center-image-wrapper"> 8.2. 使用 PDFNet 從 HTML 創建 PDFs 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); } } } Friend Class HTML2PDFSample Private Shared pdfNetLoader As pdftron.PDFNetLoader = pdftron.PDFNetLoader.Instance() Shared Sub New() End Sub Shared Sub Main(ByVal args() As String) Dim output_path As String = "../../../../TestFiles/Output/html2pdf_example" Dim host As String = "https://www.pdftron.com" HTML2PDF.SetModulePath("../../../../../Lib") If Not HTML2PDF.IsModuleAvailable() Then Console.WriteLine() Console.WriteLine("Unable to run HTML2PDFTest: PDFTron SDK HTML2PDF module not available.") Return End If Try Using doc As New PDFDoc() If HTML2PDF.Convert(doc, host & "/") Then doc.Save(output_path & "_01.pdf", SDFDoc.SaveOptions.e_linearized) Else Console.WriteLine("Conversion failed.") End If End Using Catch e As PDFNetException Console.WriteLine(e.Message) End Try End Sub End Class $vbLabelText $csharpLabel class="content-img-align-center"> class="center-image-wrapper"> 9. 許可證 IronPDF 是一個提供免費開發人員許可證的庫。 IronPDF 還提供特別的價格結構:輕量包從 $799 開始,沒有隱藏費用。 還可以重新分發 SaaS 和 OEM 產品。 所有許可證均包括 30 天的退款保證、一年的軟件支持和升級、開發/測試/暫存/生產有效性和永久許可證(一次性購買)。 IronPDF 許可證為用戶的需求提供最大性能。 訪問此 IronPDF 許可證頁面 查看 IronPDF 的完整價格結構和許可證。 class="content-img-align-center"> class="center-image-wrapper"> PDFTron PDFNet SDK 提供多種許可證選擇,專為滿足您的業務需求而量身定制。 三種類型的許可證附有企業和 OEM 再分配選項。 企業許可證僅供組織使用,不可用於應用程序分發。 許可證還包括一些需要文件系統訪問的附加 API。 所有許可證均附有許可證密鑰。 三種類型的許可證是: Viewer Viewer & Annotation Core SDK 欲了解有關其許可證結構的進一步信息,請訪問此 PDFTron 的許可證信息頁面。 10. 結論 IronPDF 提供了許多功能和功能來處理 PDF 文件並將其轉換為不同的格式。 從 HTML 到 PDF 的轉換以矢量格式生成,適合高質量的商業列印。 因此,您將收到清晰的高質量 PDF。 許可證和價格信息可在網站上找到。 與 IronPDF 類似,PDFNet 幫助過渡、註釋、簽名、填充、轉換和編輯 PDF 文件。 它支持多個平台,包括 Windows、iOS、Android、WEB 和 Linux。 對於生產用途,PDFNet SDKs 需要產品密鑰。 IronPDF 的許可證是開發者為中心的,這意味著您必須根據使用產品的開發者人數取得許可證。 另一方面,PDFNet 許可證無法以同樣的方式運行,而是基於功能的許可證。 這意味著您必須獲取支持所需功能的許可證。 IronPDF 的許可證包括內置的所有功能。 使用 PDFNet,某些功能,如文檔轉換,需要作為附加項購買。 IronPDF 庫以有組織的方式提供功能,便於使用少量代碼完成大型任務。 Iron Software 目前提供五種工具包,僅佔兩種價格。 Iron Suite 中包含的工具有: IronBarcode IronXL IronOCR IronPDF IronWebscraper 請訪問此 Iron Suite 信息頁面 以探索 Iron Suite。 請注意PDFTron 是其各自所有者的註冊商標。 本網站與 PDFTron 無關,不代表其觀點,並未獲得其批准或贊助。 所有產品名稱、徽標和品牌均為其各自所有者的財產。 比較僅供信息參考,並反映撰寫時公開可用的信息。 常見問題解答 文章中比較的主要 PDF 庫是哪些? 文章比較了由 Iron Software 開發的 IronPDF 和 PDFTron 的 PDFNet,重點介紹了這些庫在 .NET 框架中對 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 畫廊安裝,確保開發人員易於設置。 IronPDF 和 PDFNet 之間的許可差異是什麼? IronPDF 提供以開發者為中心的許可,其中包含所有功能,而 PDFNet 許可是基於功能的,可能需要為特定功能進行額外購買。 IronPDF 適合大型 PDF 任務嗎? 是的,IronPDF 以其易於使用和最少的代碼要求而受到讚譽,非常適合高效地處理大型 PDF 任務。 Iron Software 套件中包含哪些其他工具? Iron Software 套件包括 IronBarcode、IronXL、IronOCR、IronPDF 和 IronWebscraper,以一個套裝包形式提供,增加了其對開發人員的吸引力。 Curtis Chau 立即與工程團隊聊天 技術作家 Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。 相關文章 發表日期 11月 13, 2025 C# HTML 與 PDF 開源版本比較 IronPDF 將開源 HTML 轉 PDF 庫與 IronPDF for C# 進行比較。探索哪種解決方案能為您的 .NET 專案提供最佳的 PDF 生成功能。 閱讀更多 發表日期 10月 27, 2025 哪個 ASP.NET Core PDF 庫具有最佳價值? 發現適用於 ASP.NET Core 應用程式的最佳 PDF 庫。比較 IronPDF 的 Chrome 引擎與 Aspose 和 Syncfusion 的替代方案。 閱讀更多 發表日期 10月 27, 2025 如何使用 Aspose C# 和 IronPDF 創建 PDF 通過這份針對開發人員設計的分步指南,學習如何使用 Aspose C# 與 IronPDF 創建 PDF。 閱讀更多 IronPDF與GroupDocs的比較IronPDF與PSPDFKit的比較
發表日期 11月 13, 2025 C# HTML 與 PDF 開源版本比較 IronPDF 將開源 HTML 轉 PDF 庫與 IronPDF for C# 進行比較。探索哪種解決方案能為您的 .NET 專案提供最佳的 PDF 生成功能。 閱讀更多
發表日期 10月 27, 2025 哪個 ASP.NET Core PDF 庫具有最佳價值? 發現適用於 ASP.NET Core 應用程式的最佳 PDF 庫。比較 IronPDF 的 Chrome 引擎與 Aspose 和 Syncfusion 的替代方案。 閱讀更多
發表日期 10月 27, 2025 如何使用 Aspose C# 和 IronPDF 創建 PDF 通過這份針對開發人員設計的分步指南,學習如何使用 Aspose C# 與 IronPDF 創建 PDF。 閱讀更多