在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
當面對似乎無數可供選擇的 PDF 庫時,為您的需求選擇合適的 PDF 庫可能會很困難。 在比較不同的PDF庫時,有幾件事需要注意,例如: 這個庫提供哪些功能? 這些功能是否滿足你的需求,還是只能滿足部分需求? 該庫提供哪種級別的支援和文件? 學習曲線會很陡嗎? 那價格方面呢? 許可證價格在您的預算範圍內嗎?
今天,我們將看看兩個強大的 PDF 生成庫: IronPDF 和 WkHtmlToPdf。 每個庫都有其獨特的優勢,為不同的 PDF 生成和操作需求提供解決方案。
IronPDF 是一個強大的 C# 函式庫,可以在 .NET 框架中輕鬆地創建、操作和處理 PDF。 IronPDF 擁有用戶友好的 API 並提供廣泛的 PDF 相關功能支持,使開發人員更容易將 PDF 功能整合到 C# 應用程序中。 該函式庫以其全面的功能集而聞名,包括HTML轉PDF、文字和圖片提取、表單處理,以及文件安全選項,如加密和數位簽名。 您可以透過NuGet套件管理器主控台輕鬆安裝IronPDF,並快速運行該庫。欲了解更多信息,請訪問 IronPDF 官方網站.
WkHtmlToPdf 是 WkHtmlToPdf 函式庫的 .NET Core P/Invoke 包裝器,一個使用 Qt Webkit 渲染引擎將 HTML 頁面轉換為 PDF 的熱門工具。這個開源函式庫是從 DinkToPdf 派生而來,提供基本的 HTML 到 PDF 轉換功能,並專注於簡單性和效率。 安裝非常簡單,下載並運行 WkHtmlToPdf 可執行文件後,您只需確保已將其添加到系統的路徑環境變數中。 雖然缺乏 IronPDF 提供的高級功能,WkHtmlToPdf 是一個輕量且易於使用的庫。
IronPDF 因其廣泛的跨平台相容性而脫穎而出。 它支持 .NET 框架內的多種環境,確保在不同平台上流暢運行。
.NET 版本:
完全用 C# 編寫並支持 C#, VB.NET以及 F#
.NET Core (8, 7, 6, 5, 和 3.1+)
作業系統和處理器: 支援多種不同的作業系統和處理器,包括 Windows、Mac、Linux、x64、x86、ARM
有關 IronPDF 相容性的更多詳情,請造訪 IronPDF 相容性.
在比較 IronPDF 和 WkHtmlToPdf 時,了解這兩個庫在 PDF 生成和操作方面提供的功能是至關重要的。
PDF 编辑功能: 使用 IronPDF,您可以輕鬆處理現有的 PDF 文件、編輯它們以及讀取 PDF 文件。 IronPDF 提供編輯功能,例如添加頁首和頁尾、將文字和圖片蓋印到 PDF 頁面上、在 PDF 中添加自訂浮水印、處理 PDF 表單,以及拆分或合併 PDF 文件。
如需了解 IronPDF 功能的更多詳情,請造訪 IronPDF 功能.
IronPDF:
using IronPdf;
// Disable local disk access or cross-origin requests
Installation.EnableWebSecurity = true;
// Instantiate Renderer
var renderer = new ChromePdfRenderer();
// Create a PDF from an HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
// Export to a file or Stream
pdf.SaveAs("output.pdf");
// Advanced Example with HTML Assets
// Load external html assets: Images, CSS and JavaScript.
// An optional BasePath 'C:\site\assets\' is set as the file location to load assets from
var myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
myAdvancedPdf.SaveAs("html-with-assets.pdf");
using IronPdf;
// Disable local disk access or cross-origin requests
Installation.EnableWebSecurity = true;
// Instantiate Renderer
var renderer = new ChromePdfRenderer();
// Create a PDF from an HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
// Export to a file or Stream
pdf.SaveAs("output.pdf");
// Advanced Example with HTML Assets
// Load external html assets: Images, CSS and JavaScript.
// An optional BasePath 'C:\site\assets\' is set as the file location to load assets from
var myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
myAdvancedPdf.SaveAs("html-with-assets.pdf");
Imports IronPdf
' Disable local disk access or cross-origin requests
Installation.EnableWebSecurity = True
' Instantiate Renderer
Dim renderer = New ChromePdfRenderer()
' Create a PDF from an HTML string using C#
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>")
' Export to a file or Stream
pdf.SaveAs("output.pdf")
' Advanced Example with HTML Assets
' Load external html assets: Images, CSS and JavaScript.
' An optional BasePath 'C:\site\assets\' is set as the file location to load assets from
Dim myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", "C:\site\assets\")
myAdvancedPdf.SaveAs("html-with-assets.pdf")
WkHtmlToPdf (使用DinkToPdf):**
using DinkToPdf;
var converter = new BasicConverter(new PdfTools());
var doc = new HtmlToPdfDocument()
{
Objects = { new ObjectSettings() { HtmlContent = "<h1>Hello World</h1>" } }
};
byte[] pdf = converter.Convert(doc);
System.IO.File.WriteAllBytes("HtmlToPdf.pdf", pdf);
using DinkToPdf;
var converter = new BasicConverter(new PdfTools());
var doc = new HtmlToPdfDocument()
{
Objects = { new ObjectSettings() { HtmlContent = "<h1>Hello World</h1>" } }
};
byte[] pdf = converter.Convert(doc);
System.IO.File.WriteAllBytes("HtmlToPdf.pdf", pdf);
Imports DinkToPdf
Private converter = New BasicConverter(New PdfTools())
Private doc = New HtmlToPdfDocument() With {
.Objects = {
New ObjectSettings() With {.HtmlContent = "<h1>Hello World</h1>"}
}
}
Private pdf() As Byte = converter.Convert(doc)
System.IO.File.WriteAllBytes("HtmlToPdf.pdf", pdf)
WkHtmlToPdf (使用命令列)**
wkhtmltopdf myfile.html myfile.pdf
wkhtmltopdf myfile.html myfile.pdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'wkhtmltopdf myfile.html myfile.pdf
使用 IronPDF,您可以創建像素完美的 HTML 生成 PDF 檔案 只需幾行程式碼即可處理內容! 其對現代網頁標準的支持確保您生成的 PDF 文件盡可能保留原始來源的品質。 WkHtmlToPdf 是圍繞 HTML 到 PDF 的轉換而構建的,無論作為其他庫的一部分還是在命令行工具中,其簡單化的方式都足以證明這一點。
IronPDF:
using IronPdf;
using System;
//Open an Encrypted File, alternatively create a new PDF from Html
var pdf = PdfDocument.FromFile("encrypted.pdf", "password");
//Edit file metadata
pdf.MetaData.Author = "Satoshi Nakamoto";
pdf.MetaData.Keywords = "SEO, Friendly";
pdf.MetaData.ModifiedDate = DateTime.Now;
//Edit file security settings
//The following code makes a PDF read only and will disallow copy & paste and printing
pdf.SecuritySettings.RemovePasswordsAndEncryption();
pdf.SecuritySettings.MakePdfDocumentReadOnly("secret-key");
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserFormData = false;
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;
// change or set the document encryption password
pdf.Password = "my-password";
pdf.SaveAs("secured.pdf");
using IronPdf;
using System;
//Open an Encrypted File, alternatively create a new PDF from Html
var pdf = PdfDocument.FromFile("encrypted.pdf", "password");
//Edit file metadata
pdf.MetaData.Author = "Satoshi Nakamoto";
pdf.MetaData.Keywords = "SEO, Friendly";
pdf.MetaData.ModifiedDate = DateTime.Now;
//Edit file security settings
//The following code makes a PDF read only and will disallow copy & paste and printing
pdf.SecuritySettings.RemovePasswordsAndEncryption();
pdf.SecuritySettings.MakePdfDocumentReadOnly("secret-key");
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserFormData = false;
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;
// change or set the document encryption password
pdf.Password = "my-password";
pdf.SaveAs("secured.pdf");
Imports IronPdf
Imports System
'Open an Encrypted File, alternatively create a new PDF from Html
Private pdf = PdfDocument.FromFile("encrypted.pdf", "password")
'Edit file metadata
pdf.MetaData.Author = "Satoshi Nakamoto"
pdf.MetaData.Keywords = "SEO, Friendly"
pdf.MetaData.ModifiedDate = DateTime.Now
'Edit file security settings
'The following code makes a PDF read only and will disallow copy & paste and printing
pdf.SecuritySettings.RemovePasswordsAndEncryption()
pdf.SecuritySettings.MakePdfDocumentReadOnly("secret-key")
pdf.SecuritySettings.AllowUserAnnotations = False
pdf.SecuritySettings.AllowUserCopyPasteContent = False
pdf.SecuritySettings.AllowUserFormData = False
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights
' change or set the document encryption password
pdf.Password = "my-password"
pdf.SaveAs("secured.pdf")
WkHtmlToPdf:
WkHtmlToPdf 不直接提供加密支持,需依賴第三方庫。
IronPDF 提供了一種簡單易行的方法來 加密 PDF 文件,並在整個過程中為您提供充分的控制。 由於 WkHtmlToPdf 比較專注於 HTML 到 PDF 的轉換工具,它本身不提供任何對 PDF 加密的直接支援。
IronPDF:
using IronPdf;
PdfDocument pdf = PdfDocument.FromFile("novel.pdf");
// Redact 'are' phrase from all pages
pdf.RedactTextOnAllPages("are");
pdf.SaveAs("redacted.pdf");
using IronPdf;
PdfDocument pdf = PdfDocument.FromFile("novel.pdf");
// Redact 'are' phrase from all pages
pdf.RedactTextOnAllPages("are");
pdf.SaveAs("redacted.pdf");
Imports IronPdf
Private pdf As PdfDocument = PdfDocument.FromFile("novel.pdf")
' Redact 'are' phrase from all pages
pdf.RedactTextOnAllPages("are")
pdf.SaveAs("redacted.pdf")
WkHtmlToPdf:
WkHtmlToPdf 缺乏內建的編輯功能。
IronPDF 的 編輯 功能是一個強大而簡潔的 API,只需幾行代碼就能輕鬆編輯指定內容,使您的編輯任務自動化變得簡單。 WkHtmlToPdf不提供任何內建的PDF修訂功能。
IronPDF:
using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;
// Instantiate Renderer
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>foo</h1>");
// Create X509Certificate2 object with X509KeyStorageFlags set to Exportable
X509Certificate2 cert = new X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable);
// Create PdfSignature object
var sig = new PdfSignature(cert);
// Sign PDF document
pdf.Sign(sig);
pdf.SaveAs("signed.pdf");
using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;
// Instantiate Renderer
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>foo</h1>");
// Create X509Certificate2 object with X509KeyStorageFlags set to Exportable
X509Certificate2 cert = new X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable);
// Create PdfSignature object
var sig = new PdfSignature(cert);
// Sign PDF document
pdf.Sign(sig);
pdf.SaveAs("signed.pdf");
Imports IronPdf
Imports IronPdf.Signing
Imports System.Security.Cryptography.X509Certificates
' Instantiate Renderer
Private renderer As New ChromePdfRenderer()
Private pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>foo</h1>")
' Create X509Certificate2 object with X509KeyStorageFlags set to Exportable
Private cert As New X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable)
' Create PdfSignature object
Private sig = New PdfSignature(cert)
' Sign PDF document
pdf.Sign(sig)
pdf.SaveAs("signed.pdf")
WkHtmlToPdf C#:
WkHtmlToPdf C# 不提供對簽署 PDF 的原生支持。
當您使用IronPDF時,很容易地 數位簽章 由於其易於使用的數位簽章功能,您的PDF將得以簽署。 這個強大的簽署工具提供您所需的工具,以程式化地開始對 PDF 文件進行數位簽署,如果您經常需要簽署 PDF 文件,這將節省您的時間。 WkHtmlToPdf 本身無法處理 PDF 簽署,但是如果您將其作為其他庫的一部分使用,該庫可能具備執行此任務的功能。
IronPDF:
using IronPdf;
// Stamps a Watermark onto a new or existing PDF
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");
pdf.ApplyWatermark("<h2 style='color:red'>SAMPLE</h2>", 30, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center);
pdf.SaveAs(@"C:\Path\To\Watermarked.pdf");
using IronPdf;
// Stamps a Watermark onto a new or existing PDF
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");
pdf.ApplyWatermark("<h2 style='color:red'>SAMPLE</h2>", 30, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center);
pdf.SaveAs(@"C:\Path\To\Watermarked.pdf");
Imports IronPdf
' Stamps a Watermark onto a new or existing PDF
Private renderer = New ChromePdfRenderer()
Private pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf")
pdf.ApplyWatermark("<h2 style='color:red'>SAMPLE</h2>", 30, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center)
pdf.SaveAs("C:\Path\To\Watermarked.pdf")
WkHtmlToPdf:
沒有直接明確的方法來做到這一點。 相反,您需要實現高級 CSS 樣式以應用浮水印,或者使用可以處理浮水印的單獨 PDF 庫。
IronPDF為用戶提供了一個強大且簡潔的浮水印工具。 與 HTML/CSS 相似的方法,IronPDF 的 水印工具 使用起來簡單,可以輕鬆地將自訂浮水印應用於 PDF 文件。 如果您單獨使用 WkHtmlToPdf,僅能通過使用 CSS 進行浮水印。
IronPDF:
using IronPdf;
using IronPdf.Editing;
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>");
// Create text stamper
TextStamper textStamper = new TextStamper()
{
Text = "Text Stamper!",
FontFamily = "Bungee Spice",
UseGoogleFont = true,
FontSize = 30,
IsBold = true,
IsItalic = true,
VerticalAlignment = VerticalAlignment.Top,
};
// Stamp the text stamper
pdf.ApplyStamp(textStamper);
pdf.SaveAs("stampText.pdf");
using IronPdf;
using IronPdf.Editing;
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>");
// Create text stamper
TextStamper textStamper = new TextStamper()
{
Text = "Text Stamper!",
FontFamily = "Bungee Spice",
UseGoogleFont = true,
FontSize = 30,
IsBold = true,
IsItalic = true,
VerticalAlignment = VerticalAlignment.Top,
};
// Stamp the text stamper
pdf.ApplyStamp(textStamper);
pdf.SaveAs("stampText.pdf");
Imports IronPdf
Imports IronPdf.Editing
Private renderer As New ChromePdfRenderer()
Private pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>")
' Create text stamper
Private textStamper As New TextStamper() With {
.Text = "Text Stamper!",
.FontFamily = "Bungee Spice",
.UseGoogleFont = True,
.FontSize = 30,
.IsBold = True,
.IsItalic = True,
.VerticalAlignment = VerticalAlignment.Top
}
' Stamp the text stamper
pdf.ApplyStamp(textStamper)
pdf.SaveAs("stampText.pdf")
using IronPdf;
using IronPdf.Editing;
using System;
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>");
// Create image stamper
ImageStamper imageStamper = new ImageStamper(new Uri("https://ironpdf.com/img/svgs/iron-pdf-logo.svg"))
{
VerticalAlignment = VerticalAlignment.Top,
};
// Stamp the image stamper
pdf.ApplyStamp(imageStamper, 0);
pdf.SaveAs("stampImage.pdf");
using IronPdf;
using IronPdf.Editing;
using System;
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>");
// Create image stamper
ImageStamper imageStamper = new ImageStamper(new Uri("https://ironpdf.com/img/svgs/iron-pdf-logo.svg"))
{
VerticalAlignment = VerticalAlignment.Top,
};
// Stamp the image stamper
pdf.ApplyStamp(imageStamper, 0);
pdf.SaveAs("stampImage.pdf");
Imports IronPdf
Imports IronPdf.Editing
Imports System
Private renderer As New ChromePdfRenderer()
Private pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>")
' Create image stamper
Private imageStamper As New ImageStamper(New Uri("https://ironpdf.com/img/svgs/iron-pdf-logo.svg")) With {.VerticalAlignment = VerticalAlignment.Top}
' Stamp the image stamper
pdf.ApplyStamp(imageStamper, 0)
pdf.SaveAs("stampImage.pdf")
WkHtmlToPdf C#:
由於沒有專門為此設計的內建選項,使用 HTML 和 CSS 來加上文字和圖片水印需要採用間接的方法。
使用IronPDF, 蓋章文字和圖片 由於其強大且易於使用的圖片和文字添加工具,將標記添加到 PDF 文件從未如此簡單。 WkHtmlToPdf 沒有內建的加蓋工具,但您仍然可以使用 HTML 和 CSS 應用加蓋內容來達到類似的效果。
IronPDF:
using IronPdf;
// Instantiate Renderer
DocxToPdfRenderer renderer = new DocxToPdfRenderer();
// Render from DOCX file
PdfDocument pdf = renderer.RenderDocxAsPdf("Modern-chronological-resume.docx");
// Save the PDF
pdf.SaveAs("pdfFromDocx.pdf");
using IronPdf;
// Instantiate Renderer
DocxToPdfRenderer renderer = new DocxToPdfRenderer();
// Render from DOCX file
PdfDocument pdf = renderer.RenderDocxAsPdf("Modern-chronological-resume.docx");
// Save the PDF
pdf.SaveAs("pdfFromDocx.pdf");
Imports IronPdf
' Instantiate Renderer
Private renderer As New DocxToPdfRenderer()
' Render from DOCX file
Private pdf As PdfDocument = renderer.RenderDocxAsPdf("Modern-chronological-resume.docx")
' Save the PDF
pdf.SaveAs("pdfFromDocx.pdf")
WkHtmlToPdf C#:
需要額外的庫來處理 DOCX 到 PDF 的轉換。
IronPDF 簡化了 DOCX轉PDF轉換 使用其強大的DOCX轉PDF工具,只需幾行代碼,最終提高項目效率。 WkHtmlToPdf 不提供任何內建的 DOCX 轉換為 PDF 的支援,您需要尋找其他可以處理此功能的 PDF 庫。
若要了解更多 IronPDF 提供的豐富功能集,並查看其實際應用,請查看 IronPDF。 使用指南 指南深入研究每個功能,探討其運作機制,並賦予您成為 PDF 專家的技能。
IronPDF 擁有不同的等級和額外功能可供購買許可證。 開發人員還可以購買 IronSuite 可讓您以兩個產品的價格獲得所有 IronSoftware 的產品。 如果您還沒準備好購買許可證,IronPDF 提供一個 免費試用 因此,您可以在承諾購買許可證之前探索其提供的所有功能。
IronSuite:花費 $1,498,您可以獲得所有 Iron Software 產品的訪問權限,包括 IronPDF, IronOCR, IronWord, IronXL, IronBarcode, IronQR, IronZIP, IronPrint,和 IronWebScraper.
WkHtmlToPdf 是一個免費使用的開源工具,根據 LGPL 授權許可證提供,以使您在不修改庫本身的情況下可以在專有應用程式中使用 wkhtmltopdf。
IronPDF 在提供廣泛的文檔和支援方面表現出色:
PDF API 參考:提供 API 參考,讓您充分發揮我們工具所提供的功能。
如需更多資訊,請查看 IronPDF 的廣泛資料 文檔,並訪問該 IronSoftware YouTube 頻道.
總之,IronPDF 和 WkHtmlToPdf 都在 C# 中提供了獨特的 PDF 生成和操作優勢。 IronPDF以其全面的功能集脫穎而出,包括高級PDF功能,如加密、編輯、數位簽署以及無縫的DOCX到PDF轉換,這使它成為尋求多功能且易於使用的程式庫的開發人員的一個強大解決方案。 IronPDF擁有豐富的功能集和詳盡的文檔,是一個強大的工具,如果你經常處理PDF文件,應該將其納入你的開發工具包中。
另一方面,WkHtmlToPdf 在 HTML 到 PDF 轉換方面以其簡單和高效而著稱,特別適合尋求輕量級、開源解決方案且不需要高級 PDF 操作功能的用戶。 儘管缺乏IronPDF的一些更高級功能,WkHtmlToPdf的易用性、跨平台支持和零成本使其成為基本PDF生成任務的一個吸引人的選擇。 最終,在 IronPDF 和 WkHtmlToPdf 之間的選擇將取決於您的專案的具體需求、對進階 PDF 功能的需求,以及您的預算考量。