跳過到頁腳內容
產品比較

IronPDF與HiQPdf C#之比較

IronPDF 和 HiQPdf 的概述

對於從事 .NET 開發的開發人員來說,找到合適的 PDF 解決方案對於構建功能豐富的應用程序至關重要,而在現代時代中,隨著越來越多的產品提供 PDF 轉換技術,很難找到適合需求的工具。 在這次比較中,我們將評估 IronPDFHiQPdf,這兩個常用於 .NET 專案中的流行 HTML 到 PDF 庫。 儘管這兩個庫都提供強大的 PDF 生成功能,但 IronPDF 由於其更全面的功能、跨平台兼容性和直觀的 API 而脫穎而出。

無論您是在尋找高級編輯選項、跨平台支持還是易于使用的工具,這次 IronPDF 和 HiQPdf 的並排比較將幫助您做出明智的決策。

主要特徵一覽

IronPDF 是一個適用於 C# 和 .NET 的多功能 PDF 庫,可以無縫生成、編輯和操作 PDF。 支持 .NET 8、7、6 和核心,它配有豐富的工具集,可讓開發人員處理從 HTML 到 PDF 轉換到高級安全選項如加密和數字簽名的所有內容。 使用 IronPDF,您可以向每個 PDF 頁添加文本或 HTML 標頭,使用網路字型進行更好的文本自定義,提取文本,創建時尚的 PDF 文檔等等!

另一方面,HiQPdf 主要專注於 HTML 到 PDF 轉換,提供對 CSS3、JavaScript、SVG 和 Canvas 元素的強大支持。 雖然其提供可靠的 PDF 生成功能,但 HiQPdf 缺乏 IronPDF 所提供的一些高級功能和靈活性,特別是在跨平台兼容性和詳細文檔編輯方面。

IronPDF 與 HiQPdf 的 PDF 功能的關鍵特徵比較

IronPDF 功能

  • PDF 轉換: IronPDF 可以將 HTML 轉換為 PDF,通過其對現代網頁標準的全面支持,您可以放心 IronPDF 將始終如一地從您的 HTML 頁面或內容返回像素完美的 PDF。 IronPDF 還可以將 PDF 文件從其他格式(如 DOCX、圖像、RTF 等)進行轉換。
  • PDF 生成:使用 IronPDF,您可以從 URLs、ASPX 文件或 HTML 字串生成 PDF。
  • 安全功能:使用 IronPDF,您可以始終放心地確保任何敏感的 PDF 文件都是安全的,這要歸功於其安全功能。 使用 IronPDF 對您的 PDF 文件進行加密、設置密碼和對您的 PDF 文件設置權限。
  • PDF 編輯功能:使用 IronPDF 您可以處理現有的 PDF 文檔,對其進行編輯,並輕鬆地閱讀 PDF 文件。 IronPDF 提供的編輯功能包括添加頁眉和頁腳,在 PDF 頁面上壓印文本和圖像,為 PDF 添加自定義水印,處理 PDF 表單,以及拆分或合併 PDF 文件。
  • 集成:無縫地集成到 ASP.NET 和 MVC 應用中。
  • PDF 版本支持:支持 PDF 版本 1.2-1.7

有關 IronPDF 功能的完整列表,請訪問 IronPDF 功能

HiQPdf 功能:

  • HTML 到 PDF 轉換: 支持 HTML5、CSS3、JavaScript、SVG 和 Canvas 元素。 HiQPdf 能夠以精確的保真度處理複雜的頁面佈局。
  • PDF 中的 JavaScript 執行: 在 PDF 轉換後運行 JavaScript,啟用交互功能。
  • 註解和書籤: 添加標準 PDF 註解,例如評論和高亮。
  • 自定義紙張尺寸支持: 提供在 PDF 創建過程中定義自定義紙張尺寸的選項。
  • 基本密碼保護: 使用基本密碼選項保護 PDF,以限制訪問和修改。
  • 分頁 CSS 屬性: 使用 CSS 屬性 'page-break-before:always' 控制生成的 PDF 文檔中的分頁。
  • 合併和分割 PDF: 將多個 PDF 合併為一個文件,或將大型 PDF 分割為較小的文件以便更好地管理。

IronPDF 擁有更廣泛的功能集,提供更高級的 PDF 編輯、安全性和跨平台兼容性,使其在 HiQPdf 之上佔據優勢。

跨平台兼容性

IronPDF 和 HiQPdf 之間的主要區別之一是跨平台兼容性。 IronPDF 提供對 Windows、Linux 和 macOS 的無縫支持,使其成為在多樣化環境中工作的開發人員的理想選擇。 它還兼容 Docker、Azure、AWS 和主要的 .NET 版本,包括 .NET 8、7、6 和 .NET Core。

HiQPdf,儘管功能正常,但在其平台支持方面更有限,主要關注於 Windows 環境。

IronPDF 與 HiQPdf 的頂級特性,附代碼示例的比較

HTML 到 PDF 轉換

IronPDF:

using IronPdf;

// Create a new PDF renderer
var renderer = new ChromePdfRenderer();

// Render HTML to PDF
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
pdf.SaveAs("output.pdf");

// Render HTML to PDF with assets
var myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
myAdvancedPdf.SaveAs("html-with-assets.pdf");
using IronPdf;

// Create a new PDF renderer
var renderer = new ChromePdfRenderer();

// Render HTML to PDF
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
pdf.SaveAs("output.pdf");

// Render HTML to PDF with assets
var myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
myAdvancedPdf.SaveAs("html-with-assets.pdf");
Imports IronPdf

' Create a new PDF renderer
Private renderer = New ChromePdfRenderer()

' Render HTML to PDF
Private pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>")
pdf.SaveAs("output.pdf")

' Render HTML to PDF with assets
Dim myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", "C:\site\assets\")
myAdvancedPdf.SaveAs("html-with-assets.pdf")
$vbLabelText   $csharpLabel

HiQPdf:

// Create the HTML to PDF converter
HtmlToPdf htmlToPdfConverter = new HtmlToPdf();

// Convert HTML code to a PDF file
htmlToPdfConverter.ConvertHtmlToFile("<b>Hello World</b>", null, "result.pdf");
// Create the HTML to PDF converter
HtmlToPdf htmlToPdfConverter = new HtmlToPdf();

// Convert HTML code to a PDF file
htmlToPdfConverter.ConvertHtmlToFile("<b>Hello World</b>", null, "result.pdf");
' Create the HTML to PDF converter
Dim htmlToPdfConverter As New HtmlToPdf()

' Convert HTML code to a PDF file
htmlToPdfConverter.ConvertHtmlToFile("<b>Hello World</b>", Nothing, "result.pdf")
$vbLabelText   $csharpLabel

對於 HTML 到 PDF 轉換,IronPDF 通過使用 ChromePdfRenderer 將 HTML 內容轉換為 PDF,提供了一種簡單的方法,無論您是使用 HTML 文檔、字符串還是 URL。 IronPDF 還支持高級場景,例如使用本地資產(如圖像)渲染 HTML。 HiQPdf 另一方面,使用 HtmlToPdf 類,其中 HTML 內容被直接轉換為具有更基本設置的 PDF 文件。兩個庫都有效地處理 HTML 到 PDF 轉換,但 IronPDF 在資產處理方面提供了額外的靈活性。

加密 PDF 文件

IronPDF 示例:

using IronPdf;

// Load an existing PDF
var pdf = PdfDocument.FromFile("encrypted.pdf", "password");

// Set metadata and remove existing passwords
pdf.MetaData.Author = "Satoshi Nakamoto";
pdf.MetaData.Keywords = "SEO, Friendly";
pdf.MetaData.ModifiedDate = DateTime.Now;

// Update security settings
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;

// Set a new password and save the document
pdf.Password = "my-password";
pdf.SaveAs("secured.pdf");
using IronPdf;

// Load an existing PDF
var pdf = PdfDocument.FromFile("encrypted.pdf", "password");

// Set metadata and remove existing passwords
pdf.MetaData.Author = "Satoshi Nakamoto";
pdf.MetaData.Keywords = "SEO, Friendly";
pdf.MetaData.ModifiedDate = DateTime.Now;

// Update security settings
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;

// Set a new password and save the document
pdf.Password = "my-password";
pdf.SaveAs("secured.pdf");
Imports IronPdf

' Load an existing PDF
Private pdf = PdfDocument.FromFile("encrypted.pdf", "password")

' Set metadata and remove existing passwords
pdf.MetaData.Author = "Satoshi Nakamoto"
pdf.MetaData.Keywords = "SEO, Friendly"
pdf.MetaData.ModifiedDate = DateTime.Now

' Update security settings
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

' Set a new password and save the document
pdf.Password = "my-password"
pdf.SaveAs("secured.pdf")
$vbLabelText   $csharpLabel

HiQPdf:

// Create the HTML to PDF converter
HtmlToPdf htmlToPdfConverter = new HtmlToPdf();

// Set encryption mode and level
htmlToPdfConverter.Document.Security.EncryptionMode = GetSelectedEncryptionMode();
htmlToPdfConverter.Document.Security.EncryptionLevel = GetSelectedEncryptionLevel();

// Set open and permissions passwords
htmlToPdfConverter.Document.Security.OpenPassword = textBoxOpenPassword.Text;
htmlToPdfConverter.Document.Security.PermissionsPassword = textBoxPermissionsPassword.Text;

// Set PDF document permissions
htmlToPdfConverter.Document.Security.AllowPrinting = checkBoxAllowPrint.Checked;
htmlToPdfConverter.Document.Security.AllowCopyContent = checkBoxAllowCopy.Checked;
htmlToPdfConverter.Document.Security.AllowEditContent = checkBoxAllowEdit.Checked;
htmlToPdfConverter.Document.Security.AllowEditAnnotations = checkBoxAllowEditAnnotations.Checked;
htmlToPdfConverter.Document.Security.AllowFormFilling = checkBoxAllowFillForms.Checked;

// Set default permissions password if necessary
if (htmlToPdfConverter.Document.Security.PermissionsPassword == string.Empty &&
    (htmlToPdfConverter.Document.Security.OpenPassword != string.Empty || !IsDefaultPermission(htmlToPdfConverter.Document.Security)))
{
    htmlToPdfConverter.Document.Security.PermissionsPassword = "admin";
}
// Create the HTML to PDF converter
HtmlToPdf htmlToPdfConverter = new HtmlToPdf();

// Set encryption mode and level
htmlToPdfConverter.Document.Security.EncryptionMode = GetSelectedEncryptionMode();
htmlToPdfConverter.Document.Security.EncryptionLevel = GetSelectedEncryptionLevel();

// Set open and permissions passwords
htmlToPdfConverter.Document.Security.OpenPassword = textBoxOpenPassword.Text;
htmlToPdfConverter.Document.Security.PermissionsPassword = textBoxPermissionsPassword.Text;

// Set PDF document permissions
htmlToPdfConverter.Document.Security.AllowPrinting = checkBoxAllowPrint.Checked;
htmlToPdfConverter.Document.Security.AllowCopyContent = checkBoxAllowCopy.Checked;
htmlToPdfConverter.Document.Security.AllowEditContent = checkBoxAllowEdit.Checked;
htmlToPdfConverter.Document.Security.AllowEditAnnotations = checkBoxAllowEditAnnotations.Checked;
htmlToPdfConverter.Document.Security.AllowFormFilling = checkBoxAllowFillForms.Checked;

// Set default permissions password if necessary
if (htmlToPdfConverter.Document.Security.PermissionsPassword == string.Empty &&
    (htmlToPdfConverter.Document.Security.OpenPassword != string.Empty || !IsDefaultPermission(htmlToPdfConverter.Document.Security)))
{
    htmlToPdfConverter.Document.Security.PermissionsPassword = "admin";
}
' Create the HTML to PDF converter
Dim htmlToPdfConverter As New HtmlToPdf()

' Set encryption mode and level
htmlToPdfConverter.Document.Security.EncryptionMode = GetSelectedEncryptionMode()
htmlToPdfConverter.Document.Security.EncryptionLevel = GetSelectedEncryptionLevel()

' Set open and permissions passwords
htmlToPdfConverter.Document.Security.OpenPassword = textBoxOpenPassword.Text
htmlToPdfConverter.Document.Security.PermissionsPassword = textBoxPermissionsPassword.Text

' Set PDF document permissions
htmlToPdfConverter.Document.Security.AllowPrinting = checkBoxAllowPrint.Checked
htmlToPdfConverter.Document.Security.AllowCopyContent = checkBoxAllowCopy.Checked
htmlToPdfConverter.Document.Security.AllowEditContent = checkBoxAllowEdit.Checked
htmlToPdfConverter.Document.Security.AllowEditAnnotations = checkBoxAllowEditAnnotations.Checked
htmlToPdfConverter.Document.Security.AllowFormFilling = checkBoxAllowFillForms.Checked

' Set default permissions password if necessary
If htmlToPdfConverter.Document.Security.PermissionsPassword = String.Empty AndAlso (htmlToPdfConverter.Document.Security.OpenPassword <> String.Empty OrElse Not IsDefaultPermission(htmlToPdfConverter.Document.Security)) Then
	htmlToPdfConverter.Document.Security.PermissionsPassword = "admin"
End If
$vbLabelText   $csharpLabel

關於 加密 PDF 文件,IronPDF 通過其 API 提供了一種簡單直接的方法。 開發人員可以刪除現有密碼、設置新的安全設置、限制用戶動作如註釋、複製粘貼和表單數據輸入,並使文檔成為只讀。 IronPDF 允許修改元數據、密碼保護以及對列印權限的精細控制。

HiQPdf 也提供 PDF 加密功能,但采用略有不同的過程,專注於設置加密模式、級別、開啟密碼和權限密碼。 它允許對文檔權限進行細粒度控制,如打印、內容複製和編輯,當未明確設置時,提供默認權限。 兩個庫提供全面的安全設置,但 IronPDF 提供額外功能,如元數據定制和更容易處理文檔只讀模式。

隐藏 PDF 文档内容

IronPDF 示例:

using IronPdf;

// Load an existing PDF
PdfDocument pdf = PdfDocument.FromFile("novel.pdf");

// Redact specific text
pdf.RedactTextOnAllPages("are");

// Save the updated PDF
pdf.SaveAs("redacted.pdf");
using IronPdf;

// Load an existing PDF
PdfDocument pdf = PdfDocument.FromFile("novel.pdf");

// Redact specific text
pdf.RedactTextOnAllPages("are");

// Save the updated PDF
pdf.SaveAs("redacted.pdf");
Imports IronPdf

' Load an existing PDF
Private pdf As PdfDocument = PdfDocument.FromFile("novel.pdf")

' Redact specific text
pdf.RedactTextOnAllPages("are")

' Save the updated PDF
pdf.SaveAs("redacted.pdf")
$vbLabelText   $csharpLabel

HiQPdf 在其列出的功能中並未提供明確的隱藏功能。 它主要專注於 PDF 生成、轉換和操作,例如從 HTML 創建 PDF。

IronPDF 提供一種簡單的方法來隐藏內容從您的 PDF 文檔頁面。 例如,開發人員可以通過幾行代碼輕鬆隐藏整個文檔中特定的文本,如上面的代碼片段所示。 相比之下,HiQPdf 在其功能集中缺少明確的隐藏功能,主要專注于从 HTML 创建 PDF 生成、转换和操作。

数字签章 PDF 文件

IronPDF 示例:

using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;

// Create a PDF from HTML
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>foo</h1>");

// Load a digital certificate and sign the PDF
X509Certificate2 cert = new X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable);
var sig = new PdfSignature(cert);
pdf.Sign(sig);

// Save the signed PDF
pdf.SaveAs("signed.pdf");
using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;

// Create a PDF from HTML
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>foo</h1>");

// Load a digital certificate and sign the PDF
X509Certificate2 cert = new X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable);
var sig = new PdfSignature(cert);
pdf.Sign(sig);

// Save the signed PDF
pdf.SaveAs("signed.pdf");
Imports IronPdf
Imports IronPdf.Signing
Imports System.Security.Cryptography.X509Certificates

' Create a PDF from HTML
Private renderer As New ChromePdfRenderer()
Private pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>foo</h1>")

' Load a digital certificate and sign the PDF
Private cert As New X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable)
Private sig = New PdfSignature(cert)
pdf.Sign(sig)

' Save the signed PDF
pdf.SaveAs("signed.pdf")
$vbLabelText   $csharpLabel

HiQPdf:

// Create a PDF document
PdfDocument document = new PdfDocument();

// Add a page to the document
PdfPage page1 = document.AddPage();

// Create fonts for text
Font sysFont = new Font("Times New Roman", 10, System.Drawing.GraphicsUnit.Point);
PdfFont pdfFontEmbed = document.CreateFont(sysFont, true);

// Add a title to the PDF document
PdfText titleTextTransImage = new PdfText(5, 20, "Click the image below to open the digital signature", pdfFontEmbed);
titleTextTransImage.ForeColor = Color.Navy;
PdfLayoutInfo textLayoutInfo = page1.Layout(titleTextTransImage);

// Layout a PNG image with alpha transparency
PdfImage transparentPdfImage = new PdfImage(5, 50, Server.MapPath("~") + @"\DemoFiles\Images\HiQPdfLogo_small.png");
PdfLayoutInfo imageLayoutInfo = page1.Layout(transparentPdfImage);

// Apply digital signature
PdfCertificatesCollection pdfCertificates = PdfCertificatesCollection.FromFile(Server.MapPath("~") + @"\DemoFiles\Pfx\hiqpdf.pfx", "hiqpdf");
PdfDigitalSignature digitalSignature = new PdfDigitalSignature(pdfCertificates[0]);
digitalSignature.SigningReason = "My signing reason";
digitalSignature.SigningLocation = "My signing location";
digitalSignature.SignerContactInfo = "My contact info";
document.AddDigitalSignature(digitalSignature, imageLayoutInfo.LastPdfPage, imageLayoutInfo.LastPageRectangle);

try
{
    // Write the PDF document to a memory buffer
    byte[] pdfBuffer = document.WriteToMemory();

    // Inform the browser about the binary data format
    HttpContext.Current.Response.AddHeader("Content-Type", "application/pdf");

    // Let the browser know how to open the PDF document and the file name
    HttpContext.Current.Response.AddHeader("Content-Disposition", String.Format("attachment; filename=DigitalSignatures.pdf; size={0}",
                pdfBuffer.Length.ToString()));

    // Write the PDF buffer to HTTP response
    HttpContext.Current.Response.BinaryWrite(pdfBuffer);

    // End the HTTP response
    HttpContext.Current.Response.End();
}
finally
{
    document.Close();
}
// Create a PDF document
PdfDocument document = new PdfDocument();

// Add a page to the document
PdfPage page1 = document.AddPage();

// Create fonts for text
Font sysFont = new Font("Times New Roman", 10, System.Drawing.GraphicsUnit.Point);
PdfFont pdfFontEmbed = document.CreateFont(sysFont, true);

// Add a title to the PDF document
PdfText titleTextTransImage = new PdfText(5, 20, "Click the image below to open the digital signature", pdfFontEmbed);
titleTextTransImage.ForeColor = Color.Navy;
PdfLayoutInfo textLayoutInfo = page1.Layout(titleTextTransImage);

// Layout a PNG image with alpha transparency
PdfImage transparentPdfImage = new PdfImage(5, 50, Server.MapPath("~") + @"\DemoFiles\Images\HiQPdfLogo_small.png");
PdfLayoutInfo imageLayoutInfo = page1.Layout(transparentPdfImage);

// Apply digital signature
PdfCertificatesCollection pdfCertificates = PdfCertificatesCollection.FromFile(Server.MapPath("~") + @"\DemoFiles\Pfx\hiqpdf.pfx", "hiqpdf");
PdfDigitalSignature digitalSignature = new PdfDigitalSignature(pdfCertificates[0]);
digitalSignature.SigningReason = "My signing reason";
digitalSignature.SigningLocation = "My signing location";
digitalSignature.SignerContactInfo = "My contact info";
document.AddDigitalSignature(digitalSignature, imageLayoutInfo.LastPdfPage, imageLayoutInfo.LastPageRectangle);

try
{
    // Write the PDF document to a memory buffer
    byte[] pdfBuffer = document.WriteToMemory();

    // Inform the browser about the binary data format
    HttpContext.Current.Response.AddHeader("Content-Type", "application/pdf");

    // Let the browser know how to open the PDF document and the file name
    HttpContext.Current.Response.AddHeader("Content-Disposition", String.Format("attachment; filename=DigitalSignatures.pdf; size={0}",
                pdfBuffer.Length.ToString()));

    // Write the PDF buffer to HTTP response
    HttpContext.Current.Response.BinaryWrite(pdfBuffer);

    // End the HTTP response
    HttpContext.Current.Response.End();
}
finally
{
    document.Close();
}
' Create a PDF document
Dim document As New PdfDocument()

' Add a page to the document
Dim page1 As PdfPage = document.AddPage()

' Create fonts for text
Dim sysFont As New Font("Times New Roman", 10, System.Drawing.GraphicsUnit.Point)
Dim pdfFontEmbed As PdfFont = document.CreateFont(sysFont, True)

' Add a title to the PDF document
Dim titleTextTransImage As New PdfText(5, 20, "Click the image below to open the digital signature", pdfFontEmbed)
titleTextTransImage.ForeColor = Color.Navy
Dim textLayoutInfo As PdfLayoutInfo = page1.Layout(titleTextTransImage)

' Layout a PNG image with alpha transparency
Dim transparentPdfImage As New PdfImage(5, 50, Server.MapPath("~") & "\DemoFiles\Images\HiQPdfLogo_small.png")
Dim imageLayoutInfo As PdfLayoutInfo = page1.Layout(transparentPdfImage)

' Apply digital signature
Dim pdfCertificates As PdfCertificatesCollection = PdfCertificatesCollection.FromFile(Server.MapPath("~") & "\DemoFiles\Pfx\hiqpdf.pfx", "hiqpdf")
Dim digitalSignature As New PdfDigitalSignature(pdfCertificates(0))
digitalSignature.SigningReason = "My signing reason"
digitalSignature.SigningLocation = "My signing location"
digitalSignature.SignerContactInfo = "My contact info"
document.AddDigitalSignature(digitalSignature, imageLayoutInfo.LastPdfPage, imageLayoutInfo.LastPageRectangle)

Try
	' Write the PDF document to a memory buffer
	Dim pdfBuffer() As Byte = document.WriteToMemory()

	' Inform the browser about the binary data format
	HttpContext.Current.Response.AddHeader("Content-Type", "application/pdf")

	' Let the browser know how to open the PDF document and the file name
	HttpContext.Current.Response.AddHeader("Content-Disposition", String.Format("attachment; filename=DigitalSignatures.pdf; size={0}", pdfBuffer.Length.ToString()))

	' Write the PDF buffer to HTTP response
	HttpContext.Current.Response.BinaryWrite(pdfBuffer)

	' End the HTTP response
	HttpContext.Current.Response.End()
Finally
	document.Close()
End Try
$vbLabelText   $csharpLabel

对 PDF 文件进行数字签章时,IronPDF 提供了一种简单的方法,允许开发人员从 HTML 内容创建 PDF 文档,使用数字证书对其进行签名,并用最少的代码保存它。 HiQPdf 另一方面,需要一个更复杂的设置,其中通过添加页面和嵌入字体程序化地创建一个 PDF 文档。 包括一个标题和一张图像,然后应用使用指定证书的数字签名,以及详细的元数据,如签名原因和位置。

應用自訂的浮水印

IronPDF 示例:

using IronPdf;

// Create a PDF renderer and render URL
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");

// Apply a watermark to the PDF
pdf.ApplyWatermark("<h2 style='color:red'>SAMPLE</h2>", 30, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center);

// Save the PDF
pdf.SaveAs(@"C:\Path\To\Watermarked.pdf");
using IronPdf;

// Create a PDF renderer and render URL
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");

// Apply a watermark to the PDF
pdf.ApplyWatermark("<h2 style='color:red'>SAMPLE</h2>", 30, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center);

// Save the PDF
pdf.SaveAs(@"C:\Path\To\Watermarked.pdf");
Imports IronPdf

' Create a PDF renderer and render URL
Private renderer = New ChromePdfRenderer()
Private pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf")

' Apply a watermark to the PDF
pdf.ApplyWatermark("<h2 style='color:red'>SAMPLE</h2>", 30, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center)

' Save the PDF
pdf.SaveAs("C:\Path\To\Watermarked.pdf")
$vbLabelText   $csharpLabel

HiQPdf:

没有內建专用的水印工具。

应用自定义水印時,IronPDF 提供了一种简便的解决方案,具有将水印添加到 PDF 的內建支持。 在示例中,一个 URL 被呈现为 PDF,并在页面中央应用了带有 HTML 样式的可自定义水印。 这允许轻松修改水印的内容、样式和位置。 相比之下,HiQPdf 缺少內建的、专用的水印工具,这使得需要在库中直接进行这种功能的开发者的操作不太方便。

向 PDF 添加图像和文本戳记

IronPDF 示例(文本戳记):

using IronPdf;
using IronPdf.Editing;

// Create a PDF from HTML
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>");

// Create and apply a text stamp
TextStamper textStamper = new TextStamper()
{
    Text = "Text Stamper!",
    FontFamily = "Bungee Spice",
    UseGoogleFont = true,
    FontSize = 30,
    IsBold = true,
    IsItalic = true,
    VerticalAlignment = VerticalAlignment.Top
};

pdf.ApplyStamp(textStamper);
pdf.SaveAs("stampText.pdf");
using IronPdf;
using IronPdf.Editing;

// Create a PDF from HTML
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>");

// Create and apply a text stamp
TextStamper textStamper = new TextStamper()
{
    Text = "Text Stamper!",
    FontFamily = "Bungee Spice",
    UseGoogleFont = true,
    FontSize = 30,
    IsBold = true,
    IsItalic = true,
    VerticalAlignment = VerticalAlignment.Top
};

pdf.ApplyStamp(textStamper);
pdf.SaveAs("stampText.pdf");
Imports IronPdf
Imports IronPdf.Editing

' Create a PDF from HTML
Private renderer As New ChromePdfRenderer()
Private pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>")

' Create and apply a text stamp
Private textStamper As New TextStamper() With {
	.Text = "Text Stamper!",
	.FontFamily = "Bungee Spice",
	.UseGoogleFont = True,
	.FontSize = 30,
	.IsBold = True,
	.IsItalic = True,
	.VerticalAlignment = VerticalAlignment.Top
}

pdf.ApplyStamp(textStamper)
pdf.SaveAs("stampText.pdf")
$vbLabelText   $csharpLabel

IronPDF 示例(图像戳记):

using IronPdf;
using IronPdf.Editing;

// Create a PDF from HTML
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>");

// Create and apply an image stamp
ImageStamper imageStamper = new ImageStamper(new Uri("/img/svgs/iron-pdf-logo.svg"))
{
    VerticalAlignment = VerticalAlignment.Top
};

pdf.ApplyStamp(imageStamper, 0);
pdf.SaveAs("stampImage.pdf");
using IronPdf;
using IronPdf.Editing;

// Create a PDF from HTML
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>");

// Create and apply an image stamp
ImageStamper imageStamper = new ImageStamper(new Uri("/img/svgs/iron-pdf-logo.svg"))
{
    VerticalAlignment = VerticalAlignment.Top
};

pdf.ApplyStamp(imageStamper, 0);
pdf.SaveAs("stampImage.pdf");
Imports IronPdf
Imports IronPdf.Editing

' Create a PDF from HTML
Private renderer As New ChromePdfRenderer()
Private pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>")

' Create and apply an image stamp
Private imageStamper As New ImageStamper(New Uri("/img/svgs/iron-pdf-logo.svg")) With {.VerticalAlignment = VerticalAlignment.Top}

pdf.ApplyStamp(imageStamper, 0)
pdf.SaveAs("stampImage.pdf")
$vbLabelText   $csharpLabel

HiQPdf:

HiQPdf 没有专门工具可以直接将文本或图像作为戳记添加到 PDF 文档。 然而,它允许您将文本、图像和图形对象添加到 PDF,这可以起到相似的作用。 这可以通过在 PDF 中创建文本对象和图像对象来完成,使用库中可用的功能。

IronPDF 提供专门的类來直接将文本和图像戳记到任何现有的或新创建的 PDF 文档上,方便了开发者。 相比之下,HiQPdf 缺少专用戳记工具; 而是允许用户在 PDF 中添加文本和图像对象,需要更多手动操作以达到类似结果。

DOCX 到 PDF 轉換

IronPDF 示例:

using IronPdf;

// Render DOCX to PDF
DocxToPdfRenderer renderer = new DocxToPdfRenderer();
PdfDocument pdf = renderer.RenderDocxAsPdf("Modern-chronological-resume.docx");

// Save the converted PDF
pdf.SaveAs("pdfFromDocx.pdf");
using IronPdf;

// Render DOCX to PDF
DocxToPdfRenderer renderer = new DocxToPdfRenderer();
PdfDocument pdf = renderer.RenderDocxAsPdf("Modern-chronological-resume.docx");

// Save the converted PDF
pdf.SaveAs("pdfFromDocx.pdf");
Imports IronPdf

' Render DOCX to PDF
Private renderer As New DocxToPdfRenderer()
Private pdf As PdfDocument = renderer.RenderDocxAsPdf("Modern-chronological-resume.docx")

' Save the converted PDF
pdf.SaveAs("pdfFromDocx.pdf")
$vbLabelText   $csharpLabel

HiQPdf:

由于 HiQPdf 主要是一个 HTML 到 PDF 转换库,它不提供任何内建的 DOCX 到 PDF 工具。

IronPDF 提供直接支持通過其 DocxToPdfRenderer 類進行 DOCX 到 PDF 轉換,而 HiQPdf 缺乏內建的將 DOCX 文件轉換為 PDF 的工具,而是专注于 HTML 到 PDF 轉換。

代碼範例比較總結

Hiqpdf Html To Pdf Alternative 1 related to 代碼範例比較總結

欲了解更多 IronPDF 提供的豐富功能套件,並查看其運作方式,請查看 IronPDF 指導教程 ,深入探索每個功能,了解其工作方式,並賦予您成為 PDF 專業人士的技能。

現代 CSS 框架和 Bootstrap 渲染

隨著現代網路應用越來越多地採用如 Bootstrap 這樣的 CSS 框架以迅速開發和一致的 UI 設計,PDF 生產庫必須正確保存這些框架佈局以維持專業品質。

IronPDF: 完整的 Bootstrap 和框架支持

IronPDF 的 Chromium 渲染引擎全面支持所有現代 CSS 框架:

  • Bootstrap 5: 所有響應公用程式的完整 flexbox 和 CSS Grid
  • Bootstrap 4:完整卡片系統、導航和表單組件
  • Tailwind CSS:所有實用類和響應修飾符
  • Foundation:完整的網格和組件系統
  • 現代 CSS3: Flexbox, Grid, 自定義屬性, 動畫, 轉換

Validated with production examples: Bootstrap homepage and Bootstrap templates convert with pixel-perfect accuracy.

代碼示例:含 Bootstrap 的部落格文章列表

using IronPdf;

var renderer = new ChromePdfRenderer();

string bootstrapBlog = @"
<!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 my-5'>
        <h1 class='text-center mb-5'>Latest Blog Posts</h1>

        <article class='card mb-4 shadow-sm'>
            <div class='row g-0'>
                <div class='col-md-4'>
                    <img src='https://via.placeholder.com/400x300' class='img-fluid rounded-start' alt='Blog post'>
                </div>
                <div class='col-md-8'>
                    <div class='card-body d-flex flex-column h-100'>
                        <div class='d-flex justify-content-between align-items-center mb-2'>
                            <span class='badge bg-primary'>Technology</span>
                            <small class='text-muted'>March 15, 2025</small>
                        </div>
                        <h2 class='card-title h4'>The Future of Web Development</h2>
                        <p class='card-text flex-grow-1'>Exploring emerging trends in web development including serverless architecture, edge computing, and the evolution of JavaScript frameworks...</p>
                        <div class='mt-auto'>
                            <a href='#' class='btn btn-outline-primary'>Read More</a>
                        </div>
                    </div>
                </div>
            </div>
        </article>

        <article class='card mb-4 shadow-sm'>
            <div class='row g-0'>
                <div class='col-md-4'>
                    <img src='https://via.placeholder.com/400x300' class='img-fluid rounded-start' alt='Blog post'>
                </div>
                <div class='col-md-8'>
                    <div class='card-body d-flex flex-column h-100'>
                        <div class='d-flex justify-content-between align-items-center mb-2'>
                            <span class='badge bg-success'>Tutorial</span>
                            <small class='text-muted'>March 10, 2025</small>
                        </div>
                        <h2 class='card-title h4'>Mastering Docker Containerization</h2>
                        <p class='card-text flex-grow-1'>A comprehensive guide to Docker containerization, from basics to advanced deployment strategies for production environments...</p>
                        <div class='mt-auto'>
                            <a href='#' class='btn btn-outline-primary'>Read More</a>
                        </div>
                    </div>
                </div>
            </div>
        </article>

        <nav aria-label='Blog pagination'>
            <ul class='pagination justify-content-center'>
                <li class='page-item disabled'>
                    <a class='page-link'>Previous</a>
                </li>
                <li class='page-item active'><a class='page-link' href='#'>1</a></li>
                <li class='page-item'><a class='page-link' href='#'>2</a></li>
                <li class='page-item'><a class='page-link' href='#'>3</a></li>
                <li class='page-item'>
                    <a class='page-link' href='#'>Next</a>
                </li>
            </ul>
        </nav>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(bootstrapBlog);
pdf.SaveAs("blog-posts.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

string bootstrapBlog = @"
<!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 my-5'>
        <h1 class='text-center mb-5'>Latest Blog Posts</h1>

        <article class='card mb-4 shadow-sm'>
            <div class='row g-0'>
                <div class='col-md-4'>
                    <img src='https://via.placeholder.com/400x300' class='img-fluid rounded-start' alt='Blog post'>
                </div>
                <div class='col-md-8'>
                    <div class='card-body d-flex flex-column h-100'>
                        <div class='d-flex justify-content-between align-items-center mb-2'>
                            <span class='badge bg-primary'>Technology</span>
                            <small class='text-muted'>March 15, 2025</small>
                        </div>
                        <h2 class='card-title h4'>The Future of Web Development</h2>
                        <p class='card-text flex-grow-1'>Exploring emerging trends in web development including serverless architecture, edge computing, and the evolution of JavaScript frameworks...</p>
                        <div class='mt-auto'>
                            <a href='#' class='btn btn-outline-primary'>Read More</a>
                        </div>
                    </div>
                </div>
            </div>
        </article>

        <article class='card mb-4 shadow-sm'>
            <div class='row g-0'>
                <div class='col-md-4'>
                    <img src='https://via.placeholder.com/400x300' class='img-fluid rounded-start' alt='Blog post'>
                </div>
                <div class='col-md-8'>
                    <div class='card-body d-flex flex-column h-100'>
                        <div class='d-flex justify-content-between align-items-center mb-2'>
                            <span class='badge bg-success'>Tutorial</span>
                            <small class='text-muted'>March 10, 2025</small>
                        </div>
                        <h2 class='card-title h4'>Mastering Docker Containerization</h2>
                        <p class='card-text flex-grow-1'>A comprehensive guide to Docker containerization, from basics to advanced deployment strategies for production environments...</p>
                        <div class='mt-auto'>
                            <a href='#' class='btn btn-outline-primary'>Read More</a>
                        </div>
                    </div>
                </div>
            </div>
        </article>

        <nav aria-label='Blog pagination'>
            <ul class='pagination justify-content-center'>
                <li class='page-item disabled'>
                    <a class='page-link'>Previous</a>
                </li>
                <li class='page-item active'><a class='page-link' href='#'>1</a></li>
                <li class='page-item'><a class='page-link' href='#'>2</a></li>
                <li class='page-item'><a class='page-link' href='#'>3</a></li>
                <li class='page-item'>
                    <a class='page-link' href='#'>Next</a>
                </li>
            </ul>
        </nav>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(bootstrapBlog);
pdf.SaveAs("blog-posts.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

輸出: 使用 Bootstrap 的卡片佈局、flexbox 對齊、徽章組件和分頁的專業博客列表,都在 PDF 中精確渲染。

HiQPdf:有限的現代框架支持

HiQPdf 使用基於 WebKit 的 HTML 渲染,對現代 CSS 框架存在較大的限制:

  • WebKit 引擎: 較舊的 WebKit 版本,CSS3 支持不完整
  • 有限的 Flexbox: Bootstrap 4/5 的 flexbox 佈局可能無法正確渲染
  • 缺少 CSS Grid: 不支持現代的網格系統
  • Bootstrap 3 限制: 僅能可靠運行較舊的基於表格的 Bootstrap 版本
  • JavaScript 限制: 與現代瀏覽器相比,JavaScript 執行能力降低

HiQPdf 的開發者報告的問題:

  • Bootstrap 導航組件渲染時出現對齊問題
  • 基於 flexbox 的卡片佈局無法正確顯示
  • 響應式工具和斷點被忽略在 PDF 輸出中
  • 複雜的 Bootstrap 組件需要大量 CSS 替代方案修正

開發影響: 使用 Bootstrap 4+ 的應用程式在使用 HiQPdf 時需要大量額外工作。 團隊必須要么維護平行的簡化 CSS 以供 PDF 生成(雙維護負擔),要么將 UI 限制在 Bootstrap 3(犧牲現代功能),要么進行大量測試和手動修正組件(耗時且不穩定)。

有關全面的 Bootstrap 兼容性指導,請參閱Bootstrap 和 Flexbox CSS 指南

文件和支持:IronPDF vs. HiQPdf

IronPDF 文件和支持

IronPDF 提供了開發者友好的文件經驗。 其強大的文檔確保無論是初學者還是高級用戶,開發人員都可以有效地將 IronPDF 整合到項目中。 IronPDF 文檔的主要特點包括:

  • 循序漸進的指導: 每個功能的全面教程,確保開發人員從開始到結束都有清晰的路徑。
  • 24/5 技術支持: 工程師在工作時間提供協助,週一至週五。
  • 即時聊天: 實時支持以解決許可或技術問題。
  • 電子郵件支持: 用戶可以發出詳細查詢,響應快速而富有幫助。
  • API 參考: 帶有每個方法和屬性的示例的詳細 API 文檔。
  • 代碼示例: 現成的代碼片段,用於常見任務例如 HTML 到 PDF、加密、水印等。
  • 定期更新: 定期更新文檔以反映庫和新功能的變化。

For more information, check out IronPDF's extensive documentation, and visit the Iron Software YouTube Channel.

HiQPdf 文件和支持

HiQPdf 提供支持其大多數核心功能的基本文件。 雖然它提供 HTML 到 PDF 轉換和基本 PDF 操作的功能,但文件缺乏 IronPDF 所提供的深度和全面性。 HiQPdf 文件的主要特點包括:

  • 基本 API 參考: 列出 HTML 到 PDF 及基本 PDF 操作的方法。
  • 代碼示例: 用於 HTML 到 PDF 轉換和頁面設置的有限示例代碼。
  • 有限的跨平台指南: 主要關注 Windows 環境,對於跨平台部署的指導較少。
  • 電子郵件支持: 主要針對許可和基本技術問題。
  • 有限的即時支持: 實時支持的選項較少。

如需更多 HiQPdf 的技術細節,用戶需要通過額外資源或外部論壇搜索。

定價和授權:IronPDF vs. HiQPdf

IronPDF定價和許可

IronPDF 有不同級別和額外功能可供購買許可證。 開發人員還可以購買 Iron Suite,這使他们能以兩個產品的價格獲得所有 Iron Software 的產品。 如果你不準備購買許可,IronPDF 提供了 免費試用版,讓你能在承諾購買許可之前探索所有功能。

定價(截至 2025 年):

  • 永久許可: 提供了多种永久许可,取决于您的团队规模、项目需求和每种许可类型附带的电子邮件支持的地点数。
  • Lite License: 此許可證費用為 $799,支持一位开发人员、一个地点和一个项目。
  • 加強授權:支援三位開發者、地點和項目的授權階段碼比輕量授權更進一步,費用為 $1,199。 加強授權提供即時聊天支持和電話支持,除此之外還擁有基本的郵件支持。
  • 專業授權:這種授權適合大型團隊,支持十位開發者、地點和項目,費用為 $2,399。 除前一級別的聯絡支持頻道,同時提供屏幕共享支持。
  • 免版稅重發佈:IronPDF 的許可還提供免版稅重發行保護,需額外支付 $2,399
  • 不间断产品支持: IronPDF 提供访问持续的产品更新、安全功能升级和他们工程团队的支持,每年 999 美元或一次性支付 1,999 美元以获得 5 年的覆盖。
  • Iron Suite: For $1,498, you get access to all Iron Software products including IronPDF, IronOCR, IronWord, IronXL, IronBarcode, IronQR, IronZIP, IronPrint, and IronWebScraper.

Hiqpdf Html To Pdf Alternative 2 related to IronPDF定價和許可

HiQPdf 定價和授權

HiQPdf 也提供各种许可选项,但其定价趋向于更为严格:

  • 初创许可证: 245 美元,适用于单个开发人员和单个应用程序。
  • 开发者许可证: 495 美元,适用于一个开发人员和任何数量的应用程序。
  • 团队许可证: 795 美元,适用于多达五位开发人员,处理任何数量的应用程序。
  • 企业许可证: 1,095 美元,适用于无限数量的开发人员和任何数量的应用程序。

尽管 HiQPdf 定价具有竞争力,但其并未提供 IronPDF 通过 Iron Suite 捆绑包的相同价值,也不包括在价格中的广泛高级功能。

結論

无论 IronPDF 还是 HiQPdf 都是 .NET 开发者希望为应用程序集成 PDF 功能的不错选择。 然而,IronPDF 以其广泛的功能集、易用性和强大的文件而脱颖而出。 由于其跨平台兼容性、丰富的代码示例和出色的支持,IronPDF 是一款面向需要跨环境全面 PDF 功能的开发人员的理想解决方案。

如果您正在寻找一个功能齐全的解决方案,提供出色的性能、灵活性和支持,IronPDF 是一个强烈推荐的选择。此外,IronPDF 的易于处理加密、隐藏和数字签名等高级功能使其在 HiQPdf 之上。

請注意HiQPdf 是其各自擁有人註冊的商標。 此網站與 HiQPdf 無關、不受支持或得到贊助。 所有產品名稱、徽標和品牌均為其各自所有者的財產。 比較僅供信息參考,並反映撰寫時公開可用的信息。

常見問題解答

怎樣在 C# 中將 HTML 轉換為 PDF?

您可以使用 IronPDF 的 RenderHtmlAsPdf 方法將 HTML 字符串轉換為 PDF。您還可以使用 RenderHtmlFileAsPdf 將 HTML 文件轉換為 PDF。

IronPDF 支援哪些平台?

IronPDF 與 Windows、Linux、macOS、Docker、Azure、AWS 和主要的 .NET 版本(包括 .NET 8、7、6 和 .NET Core)兼容。

我可以在 PDF 中應用數位簽名嗎?

是的,IronPDF 允許您使用其 API 對 PDF 文件應用數位簽名。您可以指定證書和元數據,如簽名原因和位置。

我如何將水印添加到 PDF 文件中?

IronPDF 包含內建支援添加自定義水印到 PDF。您可以輕鬆使用 IronPDF 的 API 將水印整合到您的 PDF 文件中。

IronPDF 提供哪些安全功能?

IronPDF 提供先進的安全功能,包括加密、密碼保護、權限設置以及將文件設為唯讀的能力。

IronPDF 支援 DOCX 到 PDF 轉換嗎?

是的,IronPDF 支援 DOCX 到 PDF 的轉換。您可以使用 DocxToPdfRenderer 類來無縫地將 DOCX 文件轉換為 PDF。

IronPDF 如何處理 HTML 到 PDF 的轉換?

IronPDF 使用 ChromePdfRenderer 來將 HTML 內容渲染為 PDF,支援 HTML 文件、字符串、URL 和包含本地資產(如圖片)的場景。

IronPDF 提供哪些支援和文檔?

IronPDF 提供全面的文檔,其中包含逐步指南、廣泛的 API 參考和代碼範例。它還通過在線聊天和電子郵件提供每週 5 天的技術支援。

IronPDF 可以用於在 PDF 文件中編輯內容嗎?

是的,IronPDF 提供了一種簡單的方法來在 PDF 文件中編輯特定文本,讓開發者能夠有效管理敏感資訊。

IronPDF 提供哪些類型的許可證?

IronPDF 提供各種許可證,包括 Lite、Plus、Professional 和 Iron Suite,後者可讓您訪問所有 Iron Software 產品。它還提供免版稅再分發選項。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。