跳過到頁腳內容
USING IRONPDF

Converting HTML to PDF in .NET using IronPDF

IronPDF 是一款 .NET HTML 轉換 PDF 轉換器,它使用 Chrome 的渲染引擎將 HTML 字串、文件和網頁轉換為高品質的 PDF 文件,並支援精確的 CSS 渲染和 JavaScript 執行。

在 .NET 開發中,將 HTML 轉換為 PDF 是一項複雜的挑戰。 你需要一款能夠處理現代 CSS 佈局、正確執行 JavaScript 並產生高品質文件的 PDF 轉換器——同時還要易於實現。 IronPDF透過基於 Chrome 的渲染來解決這些挑戰,使您能夠以瀏覽器品質的保真度轉換 HTML 檔案、字串和網頁。

本文探討如何在 .NET 應用程式中實現專業的 PDF 生成,從基本轉換到高級功能,例如跨 Windows、Linux 和Azure 的數位簽章和 PDF 操作。 您將學習如何使用非同步操作來提高效能,以及如何使用自訂日誌記錄來進行偵錯。

IronPDF C# PDF 庫主頁橫幅展示了其主要功能,包括 HTML 轉 PDF、PDF 編輯功能、靈活的部署選項以及免費試用。

為什麼選擇 IronPDF 進行 .NET 中的 HTML 轉 PDF 轉換?

Chrome渲染在PDF產生有哪些優勢?

IronPDF 的 Chrome 渲染引擎可提供卓越的渲染效果。 與使用過時的WebKit快照的庫不同,IronPDF 使用了與 Google Chrome 相同的 Blink 技術。 您的 PDF 檔案與 Chrome 列印預覽中的顯示效果完全一致—沒有樣式缺失或佈局損壞。 了解Chrome 的渲染功能以及與競爭解決方案的比較。

IronPDF如何處理現代網路技術?

現代網頁應用程式使用複雜的 CSS 和 JavaScript。 IronPDF 提供對 CSS3 的原生支持,包括 flexbox、網格系統、變換和動畫。 引擎會在渲染之前處理 JavaScript,以確保動態產生的內容正確顯示。 無論是轉換檔案還是渲染頁面,IronPDF 都能捕捉到最終狀態。 該程式庫支援Bootstrap 佈局響應式設計WebGL 內容

為什麼 API 設計對開發者友善?

該程式庫透過簡潔明了的 API 設計,優先考慮開發者體驗。 你只需使用熟悉的 HTML 和 CSS,IronPDF 就能處理複雜的 HTML 和 CSS。 ChromePdfRenderer 類別提供智慧預設值,並在需要時提供細粒度的控制。 與QuestPDFSyncfusion相比,IronPDF 提供了更優越的易用性。

功能概覽儀表板顯示了四個主要的 PDF 功能:建立 PDF、轉換 PDF、編輯 PDF 以及簽名和保護 PDF,每個類別下都有詳細的功能清單。

如何在.NET 8專案中安裝IronPDF?

透過軟體套件管理器安裝的最快方法是什麼?

安裝 IronPDF 只需幾分鐘。 在 Visual Studio 中使用套件管理器控制台:

Install-Package IronPdf

套件管理器控制台顯示 IronPDF NuGet 套件的安裝過程,正在下載多個相依性

此操作會下載軟體包及其依賴項,並自動配置專案引用。 該軟體包包含在運行時解析的平台特定二進位。對於更進階的場景,請探索Docker 部署遠端容器

如何使用 .NET CLI 進行安裝?

命令列安裝:

dotnet add package IronPdf

這對於 VS Code、Rider 或自動化管線來說效果很好。 請查閱文件以取得特定於平台的說明,包括F# 支援

那麼,基於圖形使用者介面的安裝方法呢?

Visual Studio 的 NuGet 套件管理器提供了一個可搜尋的介面。 右鍵單擊您的項目,選擇"管理 NuGet 套件",搜尋"IronPdf",然後安裝。 了解企業部署的進階配置

安裝IronPDF後如何配置?

新增命名空間:

using IronPdf;
using IronPdf.Rendering; // For rendering options
using IronPdf.Editing; // For PDF editing features
using IronPdf;
using IronPdf.Rendering; // For rendering options
using IronPdf.Editing; // For PDF editing features
Imports IronPdf
Imports IronPdf.Rendering ' For rendering options
Imports IronPdf.Editing ' For PDF editing features
$vbLabelText   $csharpLabel

啟動您的生產許可證:

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

// Optional: Configure global settings
IronPdf.Installation.TempFolderPath = @"C:\Temp\IronPdf";
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true;
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

// Optional: Configure global settings
IronPdf.Installation.TempFolderPath = @"C:\Temp\IronPdf";
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true;
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"

' Optional: Configure global settings
IronPdf.Installation.TempFolderPath = "C:\Temp\IronPdf"
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = True
$vbLabelText   $csharpLabel

30 天免費試用期提供全部功能供測試。 有關配置選項,請參閱許可文件

如何使用 IronPDF 將 HTML 字串轉換為 PDF?

HTML字串轉換的基本方法是什麼?

轉換 HTML 字串是最常見的用例。 首先使用RenderHtmlAsPdf進行基本轉換:

using IronPdf;

// Create the renderer
var renderer = new ChromePdfRenderer();

// Configure options
renderer.RenderingOptions.MarginTop = 50;
renderer.RenderingOptions.MarginBottom = 50;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;

// Convert HTML to PDF
var pdf = renderer.RenderHtmlAsPdf("<h1>Invoice #12345</h1><p>Total: $99.99</p>");

// Save the PDF
pdf.SaveAs("invoice.pdf");

// Get bytes for web response
byte[] pdfBytes = pdf.BinaryData;
using IronPdf;

// Create the renderer
var renderer = new ChromePdfRenderer();

// Configure options
renderer.RenderingOptions.MarginTop = 50;
renderer.RenderingOptions.MarginBottom = 50;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;

// Convert HTML to PDF
var pdf = renderer.RenderHtmlAsPdf("<h1>Invoice #12345</h1><p>Total: $99.99</p>");

// Save the PDF
pdf.SaveAs("invoice.pdf");

// Get bytes for web response
byte[] pdfBytes = pdf.BinaryData;
Imports IronPdf

' Create the renderer
Dim renderer As New ChromePdfRenderer()

' Configure options
renderer.RenderingOptions.MarginTop = 50
renderer.RenderingOptions.MarginBottom = 50
renderer.RenderingOptions.MarginLeft = 20
renderer.RenderingOptions.MarginRight = 20

' Convert HTML to PDF
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Invoice #12345</h1><p>Total: $99.99</p>")

' Save the PDF
pdf.SaveAs("invoice.pdf")

' Get bytes for web response
Dim pdfBytes As Byte() = pdf.BinaryData
$vbLabelText   $csharpLabel

這將產生一個符合無障礙存取標準的、具有正確文字選擇的 PDF 檔案。 探索自訂頁邊距紙張尺寸選項

輸出

PDF 檢視器顯示一張簡單的發票,編號為 12345,總金額為 99.99 美元,縮放比例為 100%

如何使用 CSS 設定 PDF 樣式?

直接在 HTML 中引入 CSS:

var styledHtml = @"
    <style>
        @import url('___PROTECTED_URL_73___

        body { 
            font-family: 'Roboto', Arial, sans-serif; 
            margin: 40px;
            line-height: 1.6;
        }
        .header { 
            color: #2563eb; 
            border-bottom: 2px solid #e5e7eb; 
            padding-bottom: 10px;
        }
        .amount { 
            font-size: 24px; 
            font-weight: bold; 
            color: #059669;
        }
    </style>
    <div class='header'>
        <h1>Professional Invoice</h1>
        <p>Invoice Date: " + DateTime.Now.ToString("MMMM dd, yyyy") + @"</p>
    </div>
    <p class='amount'>$1,234.56</p>";

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.WaitFor.RenderDelay(500); // Wait for fonts

var pdf = renderer.RenderHtmlAsPdf(styledHtml);
pdf.SaveAs("styled-invoice.pdf");
var styledHtml = @"
    <style>
        @import url('___PROTECTED_URL_73___

        body { 
            font-family: 'Roboto', Arial, sans-serif; 
            margin: 40px;
            line-height: 1.6;
        }
        .header { 
            color: #2563eb; 
            border-bottom: 2px solid #e5e7eb; 
            padding-bottom: 10px;
        }
        .amount { 
            font-size: 24px; 
            font-weight: bold; 
            color: #059669;
        }
    </style>
    <div class='header'>
        <h1>Professional Invoice</h1>
        <p>Invoice Date: " + DateTime.Now.ToString("MMMM dd, yyyy") + @"</p>
    </div>
    <p class='amount'>$1,234.56</p>";

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.WaitFor.RenderDelay(500); // Wait for fonts

var pdf = renderer.RenderHtmlAsPdf(styledHtml);
pdf.SaveAs("styled-invoice.pdf");
Imports System
Imports IronPdf

Dim styledHtml As String = "
    <style>
        @import url('___PROTECTED_URL_73___

        body { 
            font-family: 'Roboto', Arial, sans-serif; 
            margin: 40px;
            line-height: 1.6;
        }
        .header { 
            color: #2563eb; 
            border-bottom: 2px solid #e5e7eb; 
            padding-bottom: 10px;
        }
        .amount { 
            font-size: 24px; 
            font-weight: bold; 
            color: #059669;
        }
    </style>
    <div class='header'>
        <h1>Professional Invoice</h1>
        <p>Invoice Date: " & DateTime.Now.ToString("MMMM dd, yyyy") & "</p>
    </div>
    <p class='amount'>$1,234.56</p>"

Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.EnableJavaScript = True
renderer.RenderingOptions.WaitFor.RenderDelay(500) ' Wait for fonts

Dim pdf = renderer.RenderHtmlAsPdf(styledHtml)
pdf.SaveAs("styled-invoice.pdf")
$vbLabelText   $csharpLabel

CSS 的渲染效果與 Chrome 完全一致。 探索渲染選項網頁字體

如何處理圖片等外部資源?

外部資源需要基礎路徑:

var htmlWithImage = @"
    <html>
    <head>
        <link rel='stylesheet' href='styles.css' />
    </head>
    <body>
        <img src='logo.png' alt='Company Logo' />
        <h1>Document Title</h1>
    </body>
    </html>";

var renderer = new ChromePdfRenderer();

// Set base path for relative URLs
var pdf = renderer.RenderHtmlAsPdf(htmlWithImage, @"C:\assets\");

// Alternative: Use web resources
var webHtml = "<img src='/images/logo.png' />";
var pdfFromWeb = renderer.RenderHtmlAsPdf(webHtml, new Uri("___PROTECTED_URL_74___"));

pdf.SaveAs("document-with-assets.pdf");
var htmlWithImage = @"
    <html>
    <head>
        <link rel='stylesheet' href='styles.css' />
    </head>
    <body>
        <img src='logo.png' alt='Company Logo' />
        <h1>Document Title</h1>
    </body>
    </html>";

var renderer = new ChromePdfRenderer();

// Set base path for relative URLs
var pdf = renderer.RenderHtmlAsPdf(htmlWithImage, @"C:\assets\");

// Alternative: Use web resources
var webHtml = "<img src='/images/logo.png' />";
var pdfFromWeb = renderer.RenderHtmlAsPdf(webHtml, new Uri("___PROTECTED_URL_74___"));

pdf.SaveAs("document-with-assets.pdf");
Dim htmlWithImage As String = "
    <html>
    <head>
        <link rel='stylesheet' href='styles.css' />
    </head>
    <body>
        <img src='logo.png' alt='Company Logo' />
        <h1>Document Title</h1>
    </body>
    </html>"

Dim renderer As New ChromePdfRenderer()

' Set base path for relative URLs
Dim pdf = renderer.RenderHtmlAsPdf(htmlWithImage, "C:\assets\")

' Alternative: Use web resources
Dim webHtml As String = "<img src='/images/logo.png' />"
Dim pdfFromWeb = renderer.RenderHtmlAsPdf(webHtml, New Uri("___PROTECTED_URL_74___"))

pdf.SaveAs("document-with-assets.pdf")
$vbLabelText   $csharpLabel

了解如何管理資產Azure Blob 儲存

輸出

! PDF 檢視器顯示 IronPDF for .NET 標誌(白色背景),顯示第 1 頁(共 1 頁),縮放比例為 100%。

如何將HTML檔案和URL轉換為PDF?

如何轉換本地HTML檔案?

轉換本地 HTML 檔案使用RenderHtmlFileAsPdf

// Simple conversion
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlFileAsPdf("report-template.html");
pdf.SaveAs("report-output.pdf");

// Advanced conversion
var advancedRenderer = new ChromePdfRenderer();
advancedRenderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
advancedRenderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Environment;
advancedRenderer.RenderingOptions.PrintHtmlBackgrounds = true;

var advancedPdf = advancedRenderer.RenderHtmlFileAsPdf("complex-report.html");
advancedPdf.MetaData.Title = "Monthly Sales Report";
advancedPdf.SaveAs("advanced-report.pdf");
// Simple conversion
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlFileAsPdf("report-template.html");
pdf.SaveAs("report-output.pdf");

// Advanced conversion
var advancedRenderer = new ChromePdfRenderer();
advancedRenderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
advancedRenderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Environment;
advancedRenderer.RenderingOptions.PrintHtmlBackgrounds = true;

var advancedPdf = advancedRenderer.RenderHtmlFileAsPdf("complex-report.html");
advancedPdf.MetaData.Title = "Monthly Sales Report";
advancedPdf.SaveAs("advanced-report.pdf");
' Simple conversion
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlFileAsPdf("report-template.html")
pdf.SaveAs("report-output.pdf")

' Advanced conversion
Dim advancedRenderer = New ChromePdfRenderer()
advancedRenderer.RenderingOptions.PaperSize = PdfPaperSize.A4
advancedRenderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Environment
advancedRenderer.RenderingOptions.PrintHtmlBackgrounds = True

Dim advancedPdf = advancedRenderer.RenderHtmlFileAsPdf("complex-report.html")
advancedPdf.MetaData.Title = "Monthly Sales Report"
advancedPdf.SaveAs("advanced-report.pdf")
$vbLabelText   $csharpLabel

此方法在內部處理文件讀取和連結資源的處理。 對於 ZIP 文件,請參閱"從存檔中取得 HTML"

如何轉換線上網頁?

使用RenderUrlAsPdf渲染網頁:

// Basic URL conversion
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("___PROTECTED_URL_75___");
pdf.SaveAs("website-snapshot.pdf");

// Advanced conversion with authentication
var secureRenderer = new ChromePdfRenderer();
secureRenderer.LoginCredentials = new ChromeHttpLoginCredentials
{
    Username = "user@example.com",
    Password = "secure-password"
};

secureRenderer.RenderingOptions.WaitFor.NetworkIdle(500);
var securePdf = secureRenderer.RenderUrlAsPdf("___PROTECTED_URL_76___");
securePdf.SaveAs("secure-dashboard.pdf");
// Basic URL conversion
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("___PROTECTED_URL_75___");
pdf.SaveAs("website-snapshot.pdf");

// Advanced conversion with authentication
var secureRenderer = new ChromePdfRenderer();
secureRenderer.LoginCredentials = new ChromeHttpLoginCredentials
{
    Username = "user@example.com",
    Password = "secure-password"
};

secureRenderer.RenderingOptions.WaitFor.NetworkIdle(500);
var securePdf = secureRenderer.RenderUrlAsPdf("___PROTECTED_URL_76___");
securePdf.SaveAs("secure-dashboard.pdf");
' Basic URL conversion
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("___PROTECTED_URL_75___")
pdf.SaveAs("website-snapshot.pdf")

' Advanced conversion with authentication
Dim secureRenderer As New ChromePdfRenderer()
secureRenderer.LoginCredentials = New ChromeHttpLoginCredentials With {
    .Username = "user@example.com",
    .Password = "secure-password"
}

secureRenderer.RenderingOptions.WaitFor.NetworkIdle(500)
Dim securePdf = secureRenderer.RenderUrlAsPdf("___PROTECTED_URL_76___")
securePdf.SaveAs("secure-dashboard.pdf")
$vbLabelText   $csharpLabel

IronPDF 會執行 JavaScript 並等待內容載入後再產生 PDF 檔案。 了解身份驗證Cookie

如何在PDF中處理響應式設計?

配置響應式網站的視窗:

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperFit.UseResponsiveCssRendering(1280);
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Screen;
renderer.RenderingOptions.ViewPortWidth = 1920;

var pdf = renderer.RenderUrlAsPdf("___PROTECTED_URL_77___");
pdf.SaveAs("responsive-output.pdf");
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperFit.UseResponsiveCssRendering(1280);
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Screen;
renderer.RenderingOptions.ViewPortWidth = 1920;

var pdf = renderer.RenderUrlAsPdf("___PROTECTED_URL_77___");
pdf.SaveAs("responsive-output.pdf");
Dim renderer = New ChromePdfRenderer()
renderer.RenderingOptions.PaperFit.UseResponsiveCssRendering(1280)
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Screen
renderer.RenderingOptions.ViewPortWidth = 1920

Dim pdf = renderer.RenderUrlAsPdf("___PROTECTED_URL_77___")
pdf.SaveAs("responsive-output.pdf")
$vbLabelText   $csharpLabel

請參閱視口文件響應式 CSS 指南

IronPDF 提供哪些進階 PDF 功能?

如何新增專業的頁首和頁尾?

頁首和頁尾可以改善多頁文件:

var renderer = new ChromePdfRenderer();

// Configure header
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    MaxHeight = 50,
    HtmlFragment = @"
        <div style='text-align: center; font-size: 12px;'>
            Annual Report 2024 - Confidential
        </div>",
    BaseUrl = new Uri(@"file:///C:/assets/")
};

// Configure footer with page numbers
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    MaxHeight = 30,
    HtmlFragment = @"
        <div style='text-align: center; font-size: 10px;'>
            Page {page} of {total-pages}
        </div>",
    DrawDividerLine = true
};

renderer.RenderingOptions.MarginTop = 60;
renderer.RenderingOptions.MarginBottom = 40;

var pdf = renderer.RenderHtmlAsPdf("<h1>Report Content</h1>");
pdf.SaveAs("report-with-headers.pdf");
var renderer = new ChromePdfRenderer();

// Configure header
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    MaxHeight = 50,
    HtmlFragment = @"
        <div style='text-align: center; font-size: 12px;'>
            Annual Report 2024 - Confidential
        </div>",
    BaseUrl = new Uri(@"file:///C:/assets/")
};

// Configure footer with page numbers
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    MaxHeight = 30,
    HtmlFragment = @"
        <div style='text-align: center; font-size: 10px;'>
            Page {page} of {total-pages}
        </div>",
    DrawDividerLine = true
};

renderer.RenderingOptions.MarginTop = 60;
renderer.RenderingOptions.MarginBottom = 40;

var pdf = renderer.RenderHtmlAsPdf("<h1>Report Content</h1>");
pdf.SaveAs("report-with-headers.pdf");
Dim renderer = New ChromePdfRenderer()

' Configure header
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With {
    .MaxHeight = 50,
    .HtmlFragment = "
        <div style='text-align: center; font-size: 12px;'>
            Annual Report 2024 - Confidential
        </div>",
    .BaseUrl = New Uri("file:///C:/assets/")
}

' Configure footer with page numbers
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With {
    .MaxHeight = 30,
    .HtmlFragment = "
        <div style='text-align: center; font-size: 10px;'>
            Page {page} of {total-pages}
        </div>",
    .DrawDividerLine = True
}

renderer.RenderingOptions.MarginTop = 60
renderer.RenderingOptions.MarginBottom = 40

Dim pdf = renderer.RenderHtmlAsPdf("<h1>Report Content</h1>")
pdf.SaveAs("report-with-headers.pdf")
$vbLabelText   $csharpLabel

特殊佔位符(如{page}{total-pages}會自動替換。 請查看標題教學

如何在PDF文件中加入浮水印?

使用浮水印保護文件:

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential Document</h1>");

// Apply text watermark
pdf.ApplyWatermark(
    "<div style='font-size: 72px; color: red; opacity: 0.3;'>DRAFT</div>",
    rotation: 45,
    opacity: 30
);

pdf.SaveAs("watermarked-document.pdf");
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential Document</h1>");

// Apply text watermark
pdf.ApplyWatermark(
    "<div style='font-size: 72px; color: red; opacity: 0.3;'>DRAFT</div>",
    rotation: 45,
    opacity: 30
);

pdf.SaveAs("watermarked-document.pdf");
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Confidential Document</h1>")

' Apply text watermark
pdf.ApplyWatermark(
    "<div style='font-size: 72px; color: red; opacity: 0.3;'>DRAFT</div>",
    rotation:=45,
    opacity:=30
)

pdf.SaveAs("watermarked-document.pdf")
$vbLabelText   $csharpLabel

了解水印技術印章選項

數位簽章需要哪些條件?

添加簽名以證明其真實性:

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Contract Agreement</h1>");

// Load certificate
var cert = X509CertificateLoader.LoadPkcs12FromFile("certificate.pfx", "password");

// Create signature
var signature = new PdfSignature(cert)
{
    SigningContact = "John Smith",
    SigningLocation = "New York, NY",
    SigningReason = "Contract Approval"
};

// Sign the PDF
pdf.Sign(signature);
pdf.SaveAsRevision("signed-contract.pdf");
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Contract Agreement</h1>");

// Load certificate
var cert = X509CertificateLoader.LoadPkcs12FromFile("certificate.pfx", "password");

// Create signature
var signature = new PdfSignature(cert)
{
    SigningContact = "John Smith",
    SigningLocation = "New York, NY",
    SigningReason = "Contract Approval"
};

// Sign the PDF
pdf.Sign(signature);
pdf.SaveAsRevision("signed-contract.pdf");
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Contract Agreement</h1>")

' Load certificate
Dim cert = X509CertificateLoader.LoadPkcs12FromFile("certificate.pfx", "password")

' Create signature
Dim signature = New PdfSignature(cert) With {
    .SigningContact = "John Smith",
    .SigningLocation = "New York, NY",
    .SigningReason = "Contract Approval"
}

' Sign the PDF
pdf.Sign(signature)
pdf.SaveAsRevision("signed-contract.pdf")
$vbLabelText   $csharpLabel

探索基於憑證的簽章HSM 整合

如何實現PDF安全功能?

保護敏感資訊:

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlContent);

// Set metadata
pdf.MetaData.Author = "Corporate Security";
pdf.MetaData.Title = "Confidential Report";

// Apply encryption
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.OwnerPassword = "owner456";
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.NoPrint;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;

pdf.SaveAs("secure-document.pdf");
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlContent);

// Set metadata
pdf.MetaData.Author = "Corporate Security";
pdf.MetaData.Title = "Confidential Report";

// Apply encryption
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.OwnerPassword = "owner456";
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.NoPrint;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;

pdf.SaveAs("secure-document.pdf");
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)

' Set metadata
pdf.MetaData.Author = "Corporate Security"
pdf.MetaData.Title = "Confidential Report"

' Apply encryption
pdf.SecuritySettings.UserPassword = "user123"
pdf.SecuritySettings.OwnerPassword = "owner456"
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.NoPrint
pdf.SecuritySettings.AllowUserCopyPasteContent = False

pdf.SaveAs("secure-document.pdf")
$vbLabelText   $csharpLabel

審查PDF安全文件清理措施

如何在生產環境中部署 IronPDF?

Windows Server部署需要哪些條件?

啟動時配置 IronPDF:

var builder = WebApplication.CreateBuilder(args);

// Configure license
IronPdf.License.LicenseKey = builder.Configuration["IronPdf:LicenseKey"];

// Configure for Windows Server
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
IronPdf.Installation.TempFolderPath = @"D:\IronPdfTemp";

// Configure logging
IronPdf.Logging.LoggingMode = IronPdf.Logging.PdfLoggingModes.All;
IronPdf.Logging.LogFilePath = @"D:\Logs\IronPdf.log";

var app = builder.Build();
var builder = WebApplication.CreateBuilder(args);

// Configure license
IronPdf.License.LicenseKey = builder.Configuration["IronPdf:LicenseKey"];

// Configure for Windows Server
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
IronPdf.Installation.TempFolderPath = @"D:\IronPdfTemp";

// Configure logging
IronPdf.Logging.LoggingMode = IronPdf.Logging.PdfLoggingModes.All;
IronPdf.Logging.LogFilePath = @"D:\Logs\IronPdf.log";

var app = builder.Build();
Dim builder = WebApplication.CreateBuilder(args)

' Configure license
IronPdf.License.LicenseKey = builder.Configuration("IronPdf:LicenseKey")

' Configure for Windows Server
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled
IronPdf.Installation.TempFolderPath = "D:\IronPdfTemp"

' Configure logging
IronPdf.Logging.LoggingMode = IronPdf.Logging.PdfLoggingModes.All
IronPdf.Logging.LogFilePath = "D:\Logs\IronPdf.log"

Dim app = builder.Build()
$vbLabelText   $csharpLabel

請參閱Windows 安裝IIS 部署

如何在Linux環境下部署?

Linux 需要額外的依賴:

FROM mcr.microsoft.com/dotnet/aspnet:8.0
RUN apt-get update && apt-get install -y \
    libgdiplus \
    libnss3 \
    libatk1.0-0 \
    libatk-bridge2.0-0 \
    libcups2 \
    && apt-get clean

WORKDIR /app
COPY . .
ENTRYPOINT ["dotnet", "MyApp.dll"]

請參閱Linux 部署Docker 整合

需要進行哪些 Azure 應用程式服務設定?

配置 Azure:

{
  "IronPdf": {
    "LicenseKey": "your-license-key",
    "TempFolderPath": "D:\\home\\IronPdfTemp",
    "ChromeGpuMode": "Disabled"
  }
}

了解Azure 部署Azure Functions

IronPDF 在 .NET PDF 庫環境中的優勢體現在哪裡?

為什麼基於 Chrome 的渲染是一項重大進步?

Chrome 引擎具有根本性的優勢。 其他網站使用較舊的引擎,而 IronPDF 則使用 Chrome 瀏覽器所採用的技術。 當 Chrome 新增 CSS 屬性或 JavaScript API 時,IronPDF 自然而然地也獲得了這些功能。 這提供了比傳統解決方案更優越的像素級完美渲染效果

跨平台支援究竟是如何運作的?

IronPDF 使用平台改進型二進位文件,在 Windows、Linux 和 macOS 上提供一致的渲染效果。 無論是在 Windows 上開發還是部署到 Linux 容器,輸出結果都相同。 了解平台注意事項引擎選項

IronPDF有哪些獨特的進階功能?

除了基本轉換功能外,IronPDF 還支援: 頁首和頁尾 可填寫表格 浮水印背景 數位簽章加密 *合併分割操作

接下來該如何開始?

IronPDF 將 HTML 到 PDF 的轉換簡化為簡單易用的實作方式。 其 Chrome 引擎確保了準確性,而 API 設計則使整合變得簡單。 從基本轉換到進階功能,IronPDF 可以滿足各種 PDF 需求。

入門需要三個步驟:安裝NuGet 套件、編寫您的第一段程式碼,然後充滿信心地部署。 免費試用期為 30 天,提供完整的功能供評估。

IronPDF 許可頁面顯示了四個永久許可等級(Lite、Plus、Professional 和 Unlimited),並針對不同團隊規模提供了定價和功能。

瀏覽程式碼範例教學課程API 文件。 IronPDF 的靈活授權模式可滿足從個人開發者到企業團隊的各種需求。 請查看更新日誌以取得最新資訊。

常見問題解答

IronPdf 用來做什麼?

IronPDF 用於在 .NET 應用程式中將 HTML 轉換為 PDF。它可以處理現代的 CSS、JavaScript,並製作高品質的 PDF 文件。

IronPdf 如何處理複雜的 HTML 佈局?

IronPDF 使用基於 Chrome 的渲染引擎準確處理複雜的 HTML 佈局,確保 PDF 輸出與您在瀏覽器中看到的內容相符。

IronPDF 能否在 PDF 轉換過程中執行 JavaScript?

是的,IronPDF 可以執行 JavaScript,這對於在 PDF 輸出中準確地呈現動態內容至關重要。

IronPDF 是否容易在 .NET 應用程式中實作?

IronPdf 的設計簡單易用,讓使用 .NET 的開發人員也能使用。

IronPDF 可以將哪些類型的 HTML 來源轉換為 PDF?

IronPDF 可以將 HTML 檔案、HTML 字串以及整個網頁轉換為 PDF 格式。

IronPDF 是否能在 PDF 中保持原始 HTML 的品質?

是的,IronPDF 生成的高质量 PDF 文档与原始 HTML 内容具有相同的保真度。

IronPDF 與其他 PDF 轉換器有何不同?

IronPdf 利用其基於 Chrome 的渲染引擎提供無縫的轉換體驗,確保與現代網路標準相容。

Curtis Chau
技術撰稿人

Curtis Chau 擁有電腦科學學士學位(卡爾頓大學),專長於前端開發,精通 Node.js、TypeScript、JavaScript 和 React。Curtis 對製作直覺且美觀的使用者介面充滿熱情,他喜歡使用現代化的架構,並製作結構良好且視覺上吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 也有濃厚的興趣,他喜歡探索整合硬體與軟體的創新方式。在空閒時間,他喜歡玩遊戲和建立 Discord bots,將他對技術的熱愛與創意結合。