在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
尋找適用於 .NET Framework 的完美 PDF 工具嗎?
在本文中,我們將探討如何在 C# 中處理 PDF 檔案。(最受歡迎的程式語言之一). 我們將討論兩個在 .NET Framework 上用 C# 的業界領先 PDF 工具,並使用代碼示例來比較它們的性能和特性。 最後,我們將檢查其授權細節並學習如何獲取授權金鑰。
兩個 PDF 庫是:
IronPDF 是由 Iron Software 開發的 C# .NET 函式庫,旨在為 C# .NET 開發人員提供單一函式庫來解決所有 PDF 問題。 IronPDF由Chromium引擎提供支持,具有多種有用而強大的功能,例如將HTML5、JavaScript、CSS和圖像文件轉換為PDF、創建自定義頁眉和頁腳,並精確顯示在瀏覽器中出現的PDF。 IronPDF 允許您從 PDF 文件中讀取數據,並自動將其插入到您的 .NET 應用程序和數據存儲系統中。 您可以將舊PDF文件存儲中的內容匯入、移動和索引到您的文檔管理和業務應用程式中。
此功能允許您從各種格式生成 PDF 檔案,例如 HTML、MVC 視圖、Web 表單、HTML 字串和 URL。
在許多情況下,您可以輕鬆地從 PDF 中提取嵌入的文本。 但是,如果失敗,您的文字很可能嵌入在圖像中。 若要將文件掃描為視覺文字,而非純文字,請使用IronOCR圖書館
在創建 PDF 或對現有 PDF 進行編輯時,可以添加頁眉和頁腳。 使用列印選項属性,您可以為每個文件頁面創建頁首和頁尾。 這些參數可在 ChromePdfRenderer 物件上使用。 此範例在 .NET Core 主控台應用程式中運行。
這使得用戶能夠從 PDF 生成照片以及從照片生成 PDF。它支持圖像提取、各種圖像擴展和 PDF 列印。
IronPDF 也包括128位 PDF 加密、密碼保護的 PDF 鎖定和 PDF 的數位簽名。
IronPDF 工具允許您在 PDF 中添加水印、添加頁面、刪除頁面、背景、前景等多種功能。
IronPDF 支援幾乎所有與 C# 相容的操作系統和框架,例如:
Windows
.NET Standard 2.0 相容性用於通用兼容性
Azure
AWS
Docker
PDFTron 的 PDFNet .NET SDK 為任何網頁、行動裝置、桌面或伺服器上的框架或應用程式提供精確的 PDF 處理、註解、編輯和創建功能。 它管理整個文檔和信息管理流程,並與您的基礎設施集成,消除對第三方服務器依賴的需求。 PDFTron 的網路平台提供了 JS 版本,並配有所支持的平台和所有 PDF SDK 的演示許可密鑰。
PDFNet 的一個最大優勢是其真正的跨平台能力,使得我們的用戶能夠輕鬆將 PDF 兼容性和相關的業務功能添加到他們的工作流程和應用程式中,並且在許多不同的移動和桌面環境中使用幾乎相同的介面。
PDFNet SDK 兼容多種平台和框架。 為了確保平台的一致性,JavaScript API 的使用方式與 PDFNet API 一致。 這個 SDK 也有 Node.js 和 Electron 版本可用。 此套件需要未受管理的附加二進位文件。
為使用者在網路、行動裝置和桌面平台上帶來安全、可擴展且高保真的PDF閱讀和編輯功能。
建立自定義簽署流程。 數位簽名文件可以被認證、驗證和封存。
從文件中移除個人資料或個人健康資料等敏感數據,同時保留文件的可搜索性。
可以新增、移除或重新排列頁面。 文件可以組裝、合併或分割成部分。 在同一個閱讀器中或彼此相鄰的狀態下同時查看多個文件。
在本文中,我們將使用主控台應用程式來生成 PDF 文件。
開啟 Visual Studio 軟體並進入檔案選單。 選擇「新專案」,然後選擇控制台應用程式。
輸入專案名稱並在相應的文本框中選擇路徑。 然後,點擊創建按鈕。 如以下截圖所示,選擇所需的 .NET 框架:
Visual Studio 專案現在將為主控台應用程式生成結構。 完成後,將打開 program.cs
文件,您可以在其中編寫和執行源代碼。
現在我們可以添加庫並測試程序。
IronPDF 庫可以透過四種不同的方式下載和安裝。 這些是:
Visual Studio 軟體提供 NuGet Package Manager 選項,讓使用者可以將套件直接安裝到解決方案中。 以下截圖顯示如何打開 NuGet Package Manager。
在打開的套件管理 GUI 中,點擊「瀏覽」標籤並搜索「IronPDF:」
在上圖中,我們可以看到搜尋結果的相關套件列表。 選擇 IronPDF 選項並將套件安裝到我們的解決方案中。
在 Visual Studio 選單中,前往 工具 > NuGet 套件管理員 > 套件管理員主控台
Install-Package IronPdf
現在將在專案中安裝 IronPDF 套件。
第三種方法是直接從NuGet套件下載NuGet Gallery IronPDF 套件.
直接從該位置下載最新套件IronPDF 下載頁面. 下載後,按照以下步驟將套件添加到專案中。
PDFNet SDK 可以透過四種不同的方式下載和安裝。
如上所述,請前往 Visual Studio 中的工具,然後打開 NuGet 套件管理器。 將出現一個列表 — 點擊管理方案的 NuGet 套件。
會出現一個帶有搜尋欄的視窗。 搜尋 PDFNet 並將其安裝到專案中。
Install-Package PDFNet ---Version 9.2.0
第三種方法是直接從NuGet套件下載NuGet Gallery PDFNet 套件.
您也可以使用 PDFNetLoader.dll 檔案安裝 PDFNet API。從GitHub Releases for PDFNetLoader.dll.
下載套件,將其放置在專案的 bin 檔案中,然後運行它。 在您的 Visual Studio 專案中,將 PDFNetLoader.dll 加入為參考。
列印 PDF 檔案是現代處理 PDF 文件的應用程式必備功能。 在這裡,我們將討論如何使用這兩個工具列印 PDF 檔案。
IronPDF 透過將 PDF 發送至電腦的預設打印機來打印。 這會開啟 Windows 列印介面——只需點擊列印即可完成。
using IronPdf;
// 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;
// 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
' Create a new PDF and print it
Private Renderer = New IronPdf.ChromePdfRenderer()
Private Pdf As PdfDocument = Renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf")
' Send the PDF to the default printer to print
Pdf.Print(300, False)
PDFTron 的 PDFNet SDK 也提供列印功能。 以下是使用 PDFNet 列印 PDF 文件的程式碼片段。
using System;
using System.Drawing;
using System.Drawing.Printing;
using pdftron;
using pdftron.PDF;
using pdftron.Common;
using pdftron.Filters;
namespace PDFPrintTestCS
{
Console.WriteLine("Opening the input file...");
using (pdfdoc = new PDFDoc(input_path + "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); // regardless of ordering, an explicit DPI setting overrides the OutputQuality setting
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 System.Drawing;
using System.Drawing.Printing;
using pdftron;
using pdftron.PDF;
using pdftron.Common;
using pdftron.Filters;
namespace PDFPrintTestCS
{
Console.WriteLine("Opening the input file...");
using (pdfdoc = new PDFDoc(input_path + "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); // regardless of ordering, an explicit DPI setting overrides the OutputQuality setting
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 System.Drawing
Imports System.Drawing.Printing
Imports pdftron
Imports pdftron.PDF
Imports pdftron.Common
Imports pdftron.Filters
Namespace PDFPrintTestCS
Console.WriteLine("Opening the input file...")
pdfdoc = New PDFDoc(input_path & "tiger.pdf")
Using pdfdoc
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) ' regardless of ordering, an explicit DPI setting overrides the OutputQuality setting
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 Namespace
兩個庫都具有將HTML轉換為PDF的功能,但方法略有不同。
IronPDF 不需要使用 JSON 或加密機制。 IronPDF 支援多種方法。 例如:
using IronPdf;
var Renderer = new IronPdf.ChromePdfRenderer();
Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>").SaveAs("pixel-perfect.pdf");
using IronPdf;
var Renderer = new IronPdf.ChromePdfRenderer();
Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>").SaveAs("pixel-perfect.pdf");
Imports IronPdf
Private Renderer = New IronPdf.ChromePdfRenderer()
Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>").SaveAs("pixel-perfect.pdf")
using IronPdf;
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
var Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/");
Pdf.SaveAs("url.pdf");
using IronPdf;
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
var Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/");
Pdf.SaveAs("url.pdf");
Imports IronPdf
Private Renderer As New IronPdf.ChromePdfRenderer()
Private Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/")
Pdf.SaveAs("url.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";
string page0 = "/";
string page1 = "/support";
string page2 = "/blog";
HTML2PDF.SetModulePath("../../../../../Lib");
if (!HTML2PDF.IsModuleAvailable())
{
Console.WriteLine();
Console.WriteLine("Unable to run HTML2PDFTest: PDFTron SDK HTML2PDF module not available.");
Console.WriteLine("-------------------------------");
Console.WriteLine("The HTML2PDF module is an optional add-on, available for download");
Console.WriteLine("at http://www.pdftron.com/. If you have already downloaded this");
Console.WriteLine("module, ensure that the SDK is able to find the required files");
Console.WriteLine("using the HTML2PDF.SetModulePath() function.");
Console.WriteLine();
return;
}
try
{
using (PDFDoc doc = new PDFDoc())
{
if ( HTML2PDF.Convert(doc, host + page0) )
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";
string page0 = "/";
string page1 = "/support";
string page2 = "/blog";
HTML2PDF.SetModulePath("../../../../../Lib");
if (!HTML2PDF.IsModuleAvailable())
{
Console.WriteLine();
Console.WriteLine("Unable to run HTML2PDFTest: PDFTron SDK HTML2PDF module not available.");
Console.WriteLine("-------------------------------");
Console.WriteLine("The HTML2PDF module is an optional add-on, available for download");
Console.WriteLine("at http://www.pdftron.com/. If you have already downloaded this");
Console.WriteLine("module, ensure that the SDK is able to find the required files");
Console.WriteLine("using the HTML2PDF.SetModulePath() function.");
Console.WriteLine();
return;
}
try
{
using (PDFDoc doc = new PDFDoc())
{
if ( HTML2PDF.Convert(doc, host + page0) )
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"
Dim page0 As String = "/"
Dim page1 As String = "/support"
Dim page2 As String = "/blog"
HTML2PDF.SetModulePath("../../../../../Lib")
If Not HTML2PDF.IsModuleAvailable() Then
Console.WriteLine()
Console.WriteLine("Unable to run HTML2PDFTest: PDFTron SDK HTML2PDF module not available.")
Console.WriteLine("-------------------------------")
Console.WriteLine("The HTML2PDF module is an optional add-on, available for download")
Console.WriteLine("at http://www.pdftron.com/. If you have already downloaded this")
Console.WriteLine("module, ensure that the SDK is able to find the required files")
Console.WriteLine("using the HTML2PDF.SetModulePath() function.")
Console.WriteLine()
Return
End If
Try
Using doc As New PDFDoc()
If HTML2PDF.Convert(doc, host & page0) 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
IronPDF 是一個提供免費開發者授權的程式庫。 IronPDF 也提供特別的價格結構:基本套裝從 $749 開始,且沒有隱藏費用。 也可以重新分發 SaaS 和 OEM 產品。 所有授權皆包括30天退款保證、一年的軟體支持和升級、開發/測試/預備/生產有效性,以及永久授權。(一次性購買). IronPDF 授權為用戶的需求提供最佳性能。 請到這個IronPDF 授權頁面查看 IronPDF 的完整定價結構和授權。
PDFTron PDFNet SDK 提供多種授權選擇,以滿足您的業務需求。 企業和OEM重新分發附帶三種類型的許可證。 企業許可證僅供組織使用,不能用於應用程式分發。 授權中還包括需要文件系統訪問的附加 API。 所有授權版本都附有授權金鑰。 三種類型的許可證是
核心 SDK
有關其許可結構的更多信息,請訪問此處PDFTron 授權資訊頁面.
IronPDF 提供許多功能與效能來處理 PDF 文件以及將其轉換為不同的格式。 將HTML轉換為PDF的過程產生的內容是矢量格式,適合高品質的商業印刷。 因此,您將收到一個清晰且高質量的 PDF。 您可以在網站上找到許可和定價資訊。
與IronPDF類似,PDFNet協助進行PDF文件的轉換、註釋、簽名、填寫、轉換和編輯。 它支持多個平台,包括 Windows、IOS、Android、WEB 和 Linux。 在生產環境中使用時,PDFNet SDK需要產品密鑰。
IronPDF 的許可證以開發者為中心,這意味著您需要根據將使用該產品的開發人員數量來獲取許可證。 另一方面,PDFNet 授權則是以功能為基礎的授權方式運作,不同於其他授權模式。 這表示您必須獲取支持所需功能的許可證。 IronPDF 授權包含所有功能,開箱即用。 在使用 PDFNet 時,某些功能如文件轉換,需要購買附加元件。
IronPDF 庫提供的功能組織有序,使得使用幾行代碼就能輕鬆編寫執行大型任務的代碼。 Iron Software目前正以兩款工具的價格提供五款工具的套裝。 IronSuite 中包含的工具有: