.NET PDF建立(使用IronPDF的開發者教程)
IronPDF使用基於Chrome的渲染引擎將ASP.NET HTML轉換為PDF,保留CSS樣式和JavaScript功能。 本教程演示了在ASP.NET Core應用程式中將HTML字串、視圖和URLs轉換為專業PDF文件的有效方法。
將動態ASP.NET HTML轉換為PDF文件是現代Web應用程式中的基本要求。 無論您是在生成發票、建立報告,還是製作可下載的PDF文件,將HTML內容轉換為專業PDF文件是提供精緻使用者體驗的關鍵。
IronPDF透過提供可靠的基於Chrome的渲染引擎簡化了這個ASP HTML到PDF的轉換過程,保留了您的HTML格式、CSS樣式和JavaScript功能至生成的PDF文件。 本教程將引導您使用IronPDF程式庫中的Chrome渲染引擎,在ASP.NET Core應用程式中進行HTML到PDF的有效轉換,以達到像素完美的效果。

為什麼開發者需要HTML到PDF的轉換?
ASP.NET Core應用程式經常生成動態HTML內容,供使用者下載、分享或存檔為PDF文件。 將HTML轉換為PDF提供了比僅僅保存網頁或進行截圖更多的關鍵優勢。
PDF文件在所有裝置和平臺上保持一致的格式,確保您的發票無論在Windows、Mac還是移動裝置上查看時都相同。 它們是需要數位簽名、安全限制或專業列印的文件的理想選擇。 伺服器端的PDF轉換消除了使用者需要安裝特定軟體的需求,並更好地控制最終輸出。
常見的使用情況包括從儀表板資料生成財務報告、從訂單資訊建立可下載的發票、使用QR碼生成票和通行證,以及將表單提交轉換為永久記錄。 透過在伺服器上處理ASP HTML到PDF的轉換,您可以確保結果始終一致,無論使用者的浏覽器或裝置支持能力。 IronPDF擅長呈現複雜的佈局,並順暢地處理大量JavaScript內容。 PDF規範支持此過程,由ISO標準機構維護,是跨平臺分發中最具可攜性的文件格式。

如何在ASP.NET專案中安裝IronPDF?
在ASP.NET Core專案中開始使用IronPDF很簡單。 該程式庫支援.NET 6、8和10,使其與所有現代ASP.NET Core應用程式相容。 有關特定平臺需求,請檢查Windows相容性指南或Linux設置說明。
將IronPDF新增到專案中的最快方法是透過NuGet套件管理器。 在解決方案總管中右鍵點擊專案,選擇"管理NuGet套件",然後搜尋IronPDF。 點擊安裝最新版本。 有關詳細指示,請參閱IronPDF安裝指南。
使用套件管理器控制台安裝:
Install-Package IronPdf
或使用.NET CLI:
dotnet add package IronPdf

安裝後如何配置IronPDF?
安裝後,在您將要進行PDF生成的任何C#文件中新增using IronPdf;指令。 此導入使您能夠使用ChromePdfRenderer類及所有渲染配置選項。
對於大多數ASP.NET Core應用程式,IronPDF安裝後即可立即運行。 但是,您可以在您的Program.cs文件中設置全域選項,以便針對您的特定託管環境(Windows、Linux、Docker或雲)進行調整:
using IronPdf;
// Optional global configuration (place in Program.cs)
Installation.TempFolderPath = @"C:\Temp\IronPdf\";
Installation.LinuxAndDockerDependenciesAutoConfig = true;
// Enable logging for debugging PDF rendering issues
Installation.LoggingMode = IronPdf.Logging.LoggingMode.All;
Installation.LogFilePath = "IronPdfLog.log";
// Required for Azure App Service deployments
Installation.AzureQuickDeployment = true;
using IronPdf;
// Optional global configuration (place in Program.cs)
Installation.TempFolderPath = @"C:\Temp\IronPdf\";
Installation.LinuxAndDockerDependenciesAutoConfig = true;
// Enable logging for debugging PDF rendering issues
Installation.LoggingMode = IronPdf.Logging.LoggingMode.All;
Installation.LogFilePath = "IronPdfLog.log";
// Required for Azure App Service deployments
Installation.AzureQuickDeployment = true;
Imports IronPdf
' Optional global configuration
Installation.TempFolderPath = "C:\Temp\IronPdf\"
Installation.LinuxAndDockerDependenciesAutoConfig = True
' Enable logging for debugging PDF rendering issues
Installation.LoggingMode = IronPdf.Logging.LoggingMode.All
Installation.LogFilePath = "IronPdfLog.log"
' Required for Azure App Service deployments
Installation.AzureQuickDeployment = True
對於Azure部署,啟用AzureQuickDeployment以獲得最佳性能。 對於生產環境,實施自訂日志記錄,以監控PDF生成操作並及早捕捉渲染失敗。

如何將HTML字串轉換為PDF?
IronPDF中最基本的操作是將HTML字串直接轉換為PDF文件。 當您在ASP.NET應用程式中動態建立HTML內容或使用HTML模板時,此方法是理想的選擇。 RenderHtmlAsPdf方法為從變數、字串生成器或模板引擎轉換HTML提供了靈活性。
// Create a PDF renderer instance
var renderer = new ChromePdfRenderer();
// Configure rendering options for print-quality output
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderingOptions.RenderDelay = 500; // milliseconds to wait before capture
// Convert an HTML string to a PDF document
var pdf = renderer.RenderHtmlAsPdf("<h1>Sales Report</h1><p>Generated on: " + DateTime.Now + "</p>");
// Save the PDF to disk
pdf.SaveAs("report.pdf");
// Or get binary data to return as a file download
var pdfBytes = pdf.BinaryData;
// Create a PDF renderer instance
var renderer = new ChromePdfRenderer();
// Configure rendering options for print-quality output
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderingOptions.RenderDelay = 500; // milliseconds to wait before capture
// Convert an HTML string to a PDF document
var pdf = renderer.RenderHtmlAsPdf("<h1>Sales Report</h1><p>Generated on: " + DateTime.Now + "</p>");
// Save the PDF to disk
pdf.SaveAs("report.pdf");
// Or get binary data to return as a file download
var pdfBytes = pdf.BinaryData;
' Create a PDF renderer instance
Dim renderer = New ChromePdfRenderer()
' Configure rendering options for print-quality output
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
renderer.RenderingOptions.RenderDelay = 500 ' milliseconds to wait before capture
' Convert an HTML string to a PDF document
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Sales Report</h1><p>Generated on: " & DateTime.Now & "</p>")
' Save the PDF to disk
pdf.SaveAs("report.pdf")
' Or get binary data to return as a file download
Dim pdfBytes = pdf.BinaryData
此程式碼段建立一個ChromePdfRenderer實例,它使用Chromium引擎來渲染您的HTML。 PdfDocument物件。 對於異步PDF生成,將調用包裝在Task.Run中以避免阻塞請求執行緒。
PDF輸出看起來如何?

如何包括CSS樣式和圖像?
IronPDF在轉換HTML為PDF時完全支援CSS樣式並嵌入來自各種來源的圖像。 渲染器處理內聯樣式、外部樣式表、Web字體、SVG圖形和Base64編碼的圖像:
var html = @"
<style>
body { font-family: Arial, sans-serif; margin: 40px; }
h1 { color: #2c3e50; border-bottom: 2px solid #3498db; }
.highlight { background-color: #f1c40f; padding: 5px; }
.data-table { width: 100%; border-collapse: collapse; }
.data-table td { border: 1px solid #ddd; padding: 8px; }
</style>
<h1>Monthly Report</h1>
<p>This document includes <span class='highlight'>highlighted text</span> and table data.</p>
<table class='data-table'>
<tr><td>Product</td><td>Sales</td></tr>
<tr><td>Widget A</td><td>$1,234</td></tr>
</table>";
var renderer = new ChromePdfRenderer();
// Set base URL so relative resource paths resolve correctly
renderer.RenderingOptions.BaseUrl = new Uri("https://yourdomain.com/");
renderer.RenderingOptions.EnableJavaScript = true;
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("styled-report.pdf");
var html = @"
<style>
body { font-family: Arial, sans-serif; margin: 40px; }
h1 { color: #2c3e50; border-bottom: 2px solid #3498db; }
.highlight { background-color: #f1c40f; padding: 5px; }
.data-table { width: 100%; border-collapse: collapse; }
.data-table td { border: 1px solid #ddd; padding: 8px; }
</style>
<h1>Monthly Report</h1>
<p>This document includes <span class='highlight'>highlighted text</span> and table data.</p>
<table class='data-table'>
<tr><td>Product</td><td>Sales</td></tr>
<tr><td>Widget A</td><td>$1,234</td></tr>
</table>";
var renderer = new ChromePdfRenderer();
// Set base URL so relative resource paths resolve correctly
renderer.RenderingOptions.BaseUrl = new Uri("https://yourdomain.com/");
renderer.RenderingOptions.EnableJavaScript = true;
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("styled-report.pdf");
Dim html As String = "
<style>
body { font-family: Arial, sans-serif; margin: 40px; }
h1 { color: #2c3e50; border-bottom: 2px solid #3498db; }
.highlight { background-color: #f1c40f; padding: 5px; }
.data-table { width: 100%; border-collapse: collapse; }
.data-table td { border: 1px solid #ddd; padding: 8px; }
</style>
<h1>Monthly Report</h1>
<p>This document includes <span class='highlight'>highlighted text</span> and table data.</p>
<table class='data-table'>
<tr><td>Product</td><td>Sales</td></tr>
<tr><td>Widget A</td><td>$1,234</td></tr>
</table>"
Dim renderer As New ChromePdfRenderer()
' Set base URL so relative resource paths resolve correctly
renderer.RenderingOptions.BaseUrl = New Uri("https://yourdomain.com/")
renderer.RenderingOptions.EnableJavaScript = True
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("styled-report.pdf")
渲染器處理CSS3功能,包括滿足的flexbox和grid佈局。 對於複雜佈局,使用Bootstrap相容性指南或使用CSS page-break-before規則實現自訂頁面斷行。
如何將ASP.NET Core視圖轉換為PDF?
將整個ASP.NET Core視圖轉換為PDF是根據現有模板生成報告的常見要求。 IronPDF支持Razor視圖、ASPX頁面,甚至是Blazor組件。
如何轉換控制器視圖?
在控制器中將視圖渲染為HTML字串,然後將其傳遞給IronPDF。 此方法適用於MVC Core和MVC Framework應用程式:
[HttpGet]
public async Task<IActionResult> DownloadPdf()
{
var invoiceModel = new InvoiceModel
{
InvoiceNumber = 12345,
Date = DateTime.Now,
CustomerName = "Acme Corporation",
Items = new List<InvoiceItem>
{
new InvoiceItem { Description = "Service", Quantity = 1, Price = 100.0 },
new InvoiceItem { Description = "Support", Quantity = 2, Price = 50.0 }
},
Total = 200.0
};
// Render the Razor view to an HTML string first
var htmlContent = await RenderViewToString("Invoice", invoiceModel);
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
// Add a text header with the invoice number
renderer.RenderingOptions.TextHeader.CenterText = "Invoice #" + invoiceModel.InvoiceNumber;
renderer.RenderingOptions.TextHeader.DrawDividerLine = true;
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
// Restrict copying while allowing printing
pdf.SecuritySettings.AllowUserPrinting = true;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
var fileName = $"invoice_{invoiceModel.InvoiceNumber}_{DateTime.Now:yyyyMMdd}.pdf";
return File(pdf.BinaryData, "application/pdf", fileName);
}
[HttpGet]
public async Task<IActionResult> DownloadPdf()
{
var invoiceModel = new InvoiceModel
{
InvoiceNumber = 12345,
Date = DateTime.Now,
CustomerName = "Acme Corporation",
Items = new List<InvoiceItem>
{
new InvoiceItem { Description = "Service", Quantity = 1, Price = 100.0 },
new InvoiceItem { Description = "Support", Quantity = 2, Price = 50.0 }
},
Total = 200.0
};
// Render the Razor view to an HTML string first
var htmlContent = await RenderViewToString("Invoice", invoiceModel);
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
// Add a text header with the invoice number
renderer.RenderingOptions.TextHeader.CenterText = "Invoice #" + invoiceModel.InvoiceNumber;
renderer.RenderingOptions.TextHeader.DrawDividerLine = true;
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
// Restrict copying while allowing printing
pdf.SecuritySettings.AllowUserPrinting = true;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
var fileName = $"invoice_{invoiceModel.InvoiceNumber}_{DateTime.Now:yyyyMMdd}.pdf";
return File(pdf.BinaryData, "application/pdf", fileName);
}
Imports System
Imports System.Collections.Generic
Imports System.Threading.Tasks
Imports Microsoft.AspNetCore.Mvc
<HttpGet>
Public Async Function DownloadPdf() As Task(Of IActionResult)
Dim invoiceModel = New InvoiceModel With {
.InvoiceNumber = 12345,
.Date = DateTime.Now,
.CustomerName = "Acme Corporation",
.Items = New List(Of InvoiceItem) From {
New InvoiceItem With {.Description = "Service", .Quantity = 1, .Price = 100.0},
New InvoiceItem With {.Description = "Support", .Quantity = 2, .Price = 50.0}
},
.Total = 200.0
}
' Render the Razor view to an HTML string first
Dim htmlContent = Await RenderViewToString("Invoice", invoiceModel)
Dim renderer = New ChromePdfRenderer()
renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter
renderer.RenderingOptions.PrintHtmlBackgrounds = True
' Add a text header with the invoice number
renderer.RenderingOptions.TextHeader.CenterText = "Invoice #" & invoiceModel.InvoiceNumber
renderer.RenderingOptions.TextHeader.DrawDividerLine = True
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
' Restrict copying while allowing printing
pdf.SecuritySettings.AllowUserPrinting = True
pdf.SecuritySettings.AllowUserCopyPasteContent = False
Dim fileName = $"invoice_{invoiceModel.InvoiceNumber}_{DateTime.Now:yyyyMMdd}.pdf"
Return File(pdf.BinaryData, "application/pdf", fileName)
End Function
此方法首先將您的Razor視圖渲染為HTML,然後將其轉換為PDF並將文件返回到浏覽器。 對於無完整ASP.NET管線的無頭轉換場景,考慮使用Razor.Templating.Core。
生成的PDF看起來如何?

如何將URL轉換為PDF?
對於現有網頁,IronPDF可以將任何URL直接轉換為PDF文件。此方法支持cookies和自訂HTTP標頭以進行驗證請求:
[HttpGet]
public IActionResult GeneratePdfFromUrl()
{
var renderer = new ChromePdfRenderer();
// Allow time for dynamic content to load before capture
renderer.RenderingOptions.WaitFor.RenderDelay = 2000;
renderer.RenderingOptions.ViewportWidth = 1920;
// Pass authorization headers if the page requires authentication
renderer.RenderingOptions.HttpHeaders.Add("Authorization", "Bearer your-token");
var pdf = renderer.RenderUrlAsPdf("https://yourwebsite.com/report");
// Compress embedded images to reduce file size
pdf.CompressImages(90);
return File(pdf.BinaryData, "application/pdf", "webpage.pdf");
}
[HttpGet]
public IActionResult GeneratePdfFromUrl()
{
var renderer = new ChromePdfRenderer();
// Allow time for dynamic content to load before capture
renderer.RenderingOptions.WaitFor.RenderDelay = 2000;
renderer.RenderingOptions.ViewportWidth = 1920;
// Pass authorization headers if the page requires authentication
renderer.RenderingOptions.HttpHeaders.Add("Authorization", "Bearer your-token");
var pdf = renderer.RenderUrlAsPdf("https://yourwebsite.com/report");
// Compress embedded images to reduce file size
pdf.CompressImages(90);
return File(pdf.BinaryData, "application/pdf", "webpage.pdf");
}
Imports Microsoft.AspNetCore.Mvc
<HttpGet>
Public Function GeneratePdfFromUrl() As IActionResult
Dim renderer = New ChromePdfRenderer()
' Allow time for dynamic content to load before capture
renderer.RenderingOptions.WaitFor.RenderDelay = 2000
renderer.RenderingOptions.ViewportWidth = 1920
' Pass authorization headers if the page requires authentication
renderer.RenderingOptions.HttpHeaders.Add("Authorization", "Bearer your-token")
Dim pdf = renderer.RenderUrlAsPdf("https://yourwebsite.com/report")
' Compress embedded images to reduce file size
pdf.CompressImages(90)
Return File(pdf.BinaryData, "application/pdf", "webpage.pdf")
End Function
此方法處理所有外部資源,包括樣式表、腳本和圖像。 對於大量JavaScript的網站,調整渲染延遲或使用WaitFor條件在特定DOM事件觸發後才進行擷取。
URL轉換的結果是什麼?

如何自定義PDF輸出?
IronPDF提供了廣泛的自定義選項來控制從HTML生成PDF文件的方式。 這些設置幫助您建立符合特定頁面佈局和格式要求的專業文件。 探索可用的全部渲染選項。
如何設置頁面大小和邊距?
var renderer = new ChromePdfRenderer();
// Set standard paper size and orientation
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;
// Set page margins in millimeters
renderer.RenderingOptions.MarginTop = 25;
renderer.RenderingOptions.MarginBottom = 25;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;
// Define a custom paper size in inches when needed
renderer.RenderingOptions.SetCustomPaperSizeInInches(8.5, 11);
// Use print CSS media type for print-optimized output
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
var renderer = new ChromePdfRenderer();
// Set standard paper size and orientation
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;
// Set page margins in millimeters
renderer.RenderingOptions.MarginTop = 25;
renderer.RenderingOptions.MarginBottom = 25;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;
// Define a custom paper size in inches when needed
renderer.RenderingOptions.SetCustomPaperSizeInInches(8.5, 11);
// Use print CSS media type for print-optimized output
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
Dim renderer = New ChromePdfRenderer()
' Set standard paper size and orientation
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait
' Set page margins in millimeters
renderer.RenderingOptions.MarginTop = 25
renderer.RenderingOptions.MarginBottom = 25
renderer.RenderingOptions.MarginLeft = 20
renderer.RenderingOptions.MarginRight = 20
' Define a custom paper size in inches when needed
renderer.RenderingOptions.SetCustomPaperSizeInInches(8.5, 11)
' Use print CSS media type for print-optimized output
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
renderer.RenderingOptions.PrintHtmlBackgrounds = True
您可以選擇標準紙張尺寸或定義自訂尺寸,設置縱向或橫向方向,並調整邊距以符合您的設計需求。 對於方向需求,探索頁面旋轉選項。
如何新增頁眉和頁腳?
新增一致的頁眉和頁腳提高了PDF文件的專業外觀。 IronPDF支持純文字頁眉,以及嵌入圖像和CSS的完整HTML頁眉:
// Simple text header and footer with dynamic placeholders
renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
CenterText = "Company Report",
LeftText = "{date}",
RightText = "Confidential",
FontSize = 12,
FontFamily = "Arial",
DrawDividerLine = true
};
renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
{
CenterText = "Page {page} of {total-pages}",
LeftText = "© 2025 Company Name",
DrawDividerLine = true
};
// For complex branded headers, use an HTML fragment instead
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
HtmlFragment = @"
<div style='display: flex; justify-content: space-between; align-items: center;'>
<img src='logo.png' height='30' />
<h2>Monthly Report</h2>
<span>{date}</span>
</div>",
MaxHeight = 50,
DrawDividerLine = true
};
// Simple text header and footer with dynamic placeholders
renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
CenterText = "Company Report",
LeftText = "{date}",
RightText = "Confidential",
FontSize = 12,
FontFamily = "Arial",
DrawDividerLine = true
};
renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
{
CenterText = "Page {page} of {total-pages}",
LeftText = "© 2025 Company Name",
DrawDividerLine = true
};
// For complex branded headers, use an HTML fragment instead
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
HtmlFragment = @"
<div style='display: flex; justify-content: space-between; align-items: center;'>
<img src='logo.png' height='30' />
<h2>Monthly Report</h2>
<span>{date}</span>
</div>",
MaxHeight = 50,
DrawDividerLine = true
};
' Simple text header and footer with dynamic placeholders
renderer.RenderingOptions.TextHeader = New TextHeaderFooter() With {
.CenterText = "Company Report",
.LeftText = "{date}",
.RightText = "Confidential",
.FontSize = 12,
.FontFamily = "Arial",
.DrawDividerLine = True
}
renderer.RenderingOptions.TextFooter = New TextHeaderFooter() With {
.CenterText = "Page {page} of {total-pages}",
.LeftText = "© 2025 Company Name",
.DrawDividerLine = True
}
' For complex branded headers, use an HTML fragment instead
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {
.HtmlFragment = "
<div style='display: flex; justify-content: space-between; align-items: center;'>
<img src='logo.png' height='30' />
<h2>Monthly Report</h2>
<span>{date}</span>
</div>",
.MaxHeight = 50,
.DrawDividerLine = True
}
ASP.NET PDF轉換的最佳實踐是什麼?
遵循這些經過驗證的實踐,以確保HTML到PDF轉換時的最佳性能和質量。 對於大規模部署,實施性能優化策略。
首先在浏覽器中測試您的HTML渲染,以驗證樣式和佈局,然後再生成PDF。 對於外部資源,使用基本URLs,因為相對路徑在轉換過程中可能導致解析失敗。 對於大量JavaScript的頁面,新增渲染延遲以確保在擷取之前完全載入。
以下範例展示可重用的PDF服務,集中配置並處理異步生成:
public class PdfService
{
private readonly ChromePdfRenderer _renderer;
public PdfService()
{
_renderer = new ChromePdfRenderer();
_renderer.RenderingOptions.RenderDelay = 100;
_renderer.RenderingOptions.Timeout = 60000;
_renderer.RenderingOptions.EnableJavaScript = true;
_renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
}
public async Task<byte[]> GeneratePdfAsync(string html, bool compressImages = false)
{
var pdf = await Task.Run(() => _renderer.RenderHtmlAsPdf(html));
if (compressImages)
{
pdf.CompressImages(90);
}
return pdf.BinaryData;
}
}
public class PdfService
{
private readonly ChromePdfRenderer _renderer;
public PdfService()
{
_renderer = new ChromePdfRenderer();
_renderer.RenderingOptions.RenderDelay = 100;
_renderer.RenderingOptions.Timeout = 60000;
_renderer.RenderingOptions.EnableJavaScript = true;
_renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
}
public async Task<byte[]> GeneratePdfAsync(string html, bool compressImages = false)
{
var pdf = await Task.Run(() => _renderer.RenderHtmlAsPdf(html));
if (compressImages)
{
pdf.CompressImages(90);
}
return pdf.BinaryData;
}
}
Public Class PdfService
Private ReadOnly _renderer As ChromePdfRenderer
Public Sub New()
_renderer = New ChromePdfRenderer()
_renderer.RenderingOptions.RenderDelay = 100
_renderer.RenderingOptions.Timeout = 60000
_renderer.RenderingOptions.EnableJavaScript = True
_renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
End Sub
Public Async Function GeneratePdfAsync(html As String, Optional compressImages As Boolean = False) As Task(Of Byte())
Dim pdf = Await Task.Run(Function() _renderer.RenderHtmlAsPdf(html))
If compressImages Then
pdf.CompressImages(90)
End If
Return pdf.BinaryData
End Function
End Class
考慮為經常生成的文件實施快取,以減少伺服器負擔。 使用異步方法以提高Web應用程式的可擴展性。 對於高流量場景,考慮並行處理或將IronPDF作為微服務部署。
在部署到生產環境時,配置適當的臨時資料夾路徑,並確保您的託管環境已安裝必要的相依性,特別是在Linux部署時。 監控記憶體使用情況,並使用Microsoft的.NET指引中的IDisposable模式實施正確的再生模式。 在處理大HTML文件時,使用串流方法以最小化記憶體開銷。
下表總結了三種主要轉換方法以及在什麼情況下使用每一種方法:
| 方法 | 最適合 | 關鍵API | 驗證支持 |
|---|---|---|---|
| HTML字串 | 在程式碼中建立的動態內容 | RenderHtmlAsPdf() |
適用範圍不詳 |
| Razor視圖 | 現有MVC視圖和模板 | RenderHtmlAsPdf() |
會話上下文 |
| URL | 公共或驗證過的網頁 | RenderUrlAsPdf() |
Cookies, headers, credentials |
您的PDF生成過程的下一步是什麼?
在ASP.NET Core應用程式中,藉助IronPDF將ASP HTML轉換為PDF變得簡單。 該程式庫基於Chrome的渲染確保準確的轉換,並提供廣泛的自訂選項以生成專業文件。 探索PDF/A合規性、數位簽名和表單建立等高級功能。
無論是處理HTML字串、URLs,還是完整的Razor視圖,IronPDF都會保留精確的格式、CSS樣式和JavaScript行為。 考慮探索PDF壓縮、水印和元資料管理以獲得完整的文件控制。
立即開始您的免費30天試用,在您的ASP.NET Core應用程式中實施專業PDF生成。 需要幫助選擇嗎? 查看授權選項,或與團隊預約演示。

常見問題
在ASP.NET Core中將HTML轉換為PDF的最佳方式是什麼?
在ASP.NET Core中將HTML轉換為PDF的最佳方式是使用IronPDF。它提供了完美的解決方案來轉換HTML內容,確保高質量的PDF生成。
為什麼我應該使用IronPDF將HTML轉換為PDF?
IronPDF提供強大的功能,例如精確的渲染、對CSS和JavaScript的支持,以及處理複雜HTML文件的能力。這使其成為從ASP.NET應用程式生成專業級PDF的理想選擇。
IronPDF可以處理ASP.NET應用程式中的動態內容嗎?
可以,IronPDF可以有效地處理ASP.NET應用程式中的動態內容。它能處理和轉換動態HTML內容為PDF,非常適合建立發票、報告和其他文件。
使用IronPDF生成的PDF中可以包含CSS樣式嗎?
當然,IronPDF支持CSS樣式。您可以應用現有的CSS樣式表以確保PDF輸出符合HTML內容的設計和佈局。
IronPDF如何在HTML到PDF轉換中支持JavaScript?
IronPDF完全支持JavaScript,允許您在HTML中包含動態元素和互動內容,以準確渲染到結果PDF中。
在ASP.NET中將HTML轉換為PDF的常見應用案例有哪些?
常見的應用案例包括生成發票、建立詳細報告、製作證書,以及直接從ASP.NET應用程式提供可下載內容,如電子書和宣傳冊。
IronPDF如何確保PDF輸出的品質?
IronPDF通過準確渲染HTML內容,包括字體、圖像、表格和其他元素,維持原始設計的忠實度,以確保高品質的PDF輸出。
我可以用IronPDF自動化HTML到PDF的轉換過程嗎?
可以,IronPDF可以整合到ASP.NET應用程式中的自動化工作流程中,允許您將HTML到PDF的轉換作為應用程式流程的一部分進行自動化。

