Chrome 渲染引擎 EAP - PDF 生成的变革者

Chrome PDF 渲染引擎(C

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronPDF 的 Chrome 渲染引擎使 C# 开发人员能够利用 Chromium 强大的渲染技术将 HTML 转换为高质量的 PDF。 使用利用 Google Chrome 浏览器渲染引擎的代码创建发票、报告或文档,确保 PDF 保持准确的 HTML 外观,并完全支持现代网络标准。

Chromium 是由 Google 开发的一个开源网络浏览器项目。 它是 Chrome、Microsoft Edge、Opera 和其他浏览器的基础。 通过利用 Chromium 的 Blink 渲染引擎,IronPDF 可确保在您的 .NET 应用程序中 将 HTML 转换为 PDF 时的像素精确度。

快速入门:使用IronPDF在几秒钟内将 HTML 渲染为 PDF

开始使用 IronPDF 的 Chrome 渲染引擎快速将 HTML 转换为 PDF。 只需几行代码,就能利用 Chromium 技术生成像素完美的 PDF 文档。 本指南演示了使用 IronPDF 渲染 HTML 内容的简易性,重点在于易用性和快速实施。 IronPDF 可与现有的 .NET 项目无缝集成,为现代网络和应用程序开发提供可靠的高性能解决方案。

  1. 使用 NuGet 包管理器安装 https://www.nuget.org/packages/IronPdf

    PM > Install-Package IronPdf
  2. 复制并运行这段代码。

    using IronPdf;
    
    // Create a new ChromePdfRenderer instance
    var renderer = new ChromePdfRenderer();
    
    // Render HTML string to PDF
    var pdf = renderer.RenderHtmlAsPdf("<h1>Hello, World!</h1>");
    
    // Save the PDF to disk
    pdf.SaveAs("HelloWorld.pdf");
  3. 部署到您的生产环境中进行测试

    通过免费试用立即在您的项目中开始使用IronPDF

    arrow pointer


IronPDF 的 Chrome 渲染引擎有哪些主要优势?

为什么高质量渲染很重要?

最新的 "Blink!"HTML 渲染提供了Chrome 相同渲染或增强渲染(可提供比 Chrome 更准确、更易于编码的结果)。 在生成专业使用的 PDF 时,渲染质量直接影响文档的可读性、品牌表现力和用户体验。 IronPDF 的 Chrome 渲染引擎可确保复杂布局、现代 CSS 功能和动态 JavaScript 内容准确渲染,与浏览器显示相匹配。

性能有多快?

提供简单的多线程和Async,使用尽可能多的CPU核心。 对于 SAAS 和高负载应用程序,与直接使用浏览器和网络驱动程序相比,性能有望提高 5-20 倍在批量处理场景或对响应时间要求极高的大流量网络应用程序中生成 PDF 报告时,性能提升尤为明显。

完全支持哪些技术?

完全支持JavaScript响应式布局和CSS3Azure 最重要的角色。 就这样运行。
持续维护并为 .NET 8、7、6、5、Core 和 Framework 4.6.2+ 提供全面的支持和改进。

该引擎支持以下高级功能

  • 现代 CSS 网格和 Flexbox 布局
  • 网页字体和图标字体
  • SVG 图形和 Canvas 元素
  • 复杂的 JavaScript 框架(React、Angular、Vue.js)
  • 媒体查询和响应式设计
  • CSS动画和过渡

对于使用 Bootstrap、Flex 和 CSS 的开发人员,IronPDF 可提供全面的支持,确保风格化的内容在 PDF 格式中完美呈现。

测试过程的可靠性如何?

该版本通过了 1156 项绿色单元和集成测试(无红色测试)。 该 EAP 与我们的主版本一样稳定,每天都在不断改进。 我们严格的测试过程涵盖各种情况,包括复杂的 HTML 结构、不同的字符编码、各种纸张大小以及生产环境中遇到的边缘情况。

是否支持无障碍标准?

using PDF(UA) 标记的 PDF 标准生成可访问的 PDF。 这样才能确保文件符合可访问性要求,并能被屏幕阅读器正确阅读。 了解有关创建符合 IronPDF/UA 标准的文档以实现更好的可访问性的更多信息。

如何提供反馈?

欢迎您提供反馈意见。 如果您有想法或需要帮助,请联系 support@ironsoftware.com 。您的反馈有助于我们优先考虑对开发者社区最重要的功能和改进。


在您的项目中实施

如何安装 IronPDF?

首先,使用IronPdf从NuGet包管理器将IronPDF安装到您的项目中。 安装过程简单明了,可根据您的开发环境使用各种方法完成。

# Using Package Manager Console
Install-Package IronPdf

# Using .NET CLI
dotnet add package IronPdf

# Using PackageReference in your .csproj file
<PackageReference Include="IronPdf" Version="*" />
# Using Package Manager Console
Install-Package IronPdf

# Using .NET CLI
dotnet add package IronPdf

# Using PackageReference in your .csproj file
<PackageReference Include="IronPdf" Version="*" />
SHELL

安装后,在C#文件顶部添加适当的using语句。

:path=/static-assets/pdf/content-code-examples/how-to/ironpdf-2021-chrome-rendering-engine-eap-3.cs
using IronPdf;
Imports IronPdf
$vbLabelText   $csharpLabel

有关高级安装场景,包括部署到 Azure在 Docker 容器中运行,请参阅我们的综合安装指南。


如何使用新 API?

我们没有破坏您已经在使用的 IronPDF C# 和 VB.NET API。 它将保留! 然而,旧的风格被更好的风格取代,以便为您提供更多的控制。 新的 API 通过增强的配置选项为 PDF 生成提供了更直观、更灵活的方法。

:path=/static-assets/pdf/content-code-examples/how-to/ironpdf-2021-chrome-rendering-engine-eap-4.cs
using IronPdf;

// Create a renderer with custom options
var renderer = new ChromePdfRenderer();

// Configure rendering options
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.CssMediaType.Screen;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;

// Set paper size and margins
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 25;
renderer.RenderingOptions.MarginBottom = 25;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;

// Set HTTP credentials if needed for protected resources
renderer.RenderingOptions.HttpLoginCredentials = new IronPdf.HttpLoginCredentials()
{
    Username = "yourUsername",
    Password = "yourPassword"
};

// Render HTML to PDF
var pdf = renderer.RenderHtmlAsPdf("<h1>Professional Document</h1><p>Generated with IronPDF</p>");
pdf.SaveAs("ProfessionalDocument.pdf");
Imports IronPdf

' Create a renderer with custom options
Dim renderer As New ChromePdfRenderer()

' Configure rendering options
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.CssMediaType.Screen
renderer.RenderingOptions.PrintHtmlBackgrounds = True
renderer.RenderingOptions.CreatePdfFormsFromHtml = True

' Set paper size and margins
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4
renderer.RenderingOptions.MarginTop = 25
renderer.RenderingOptions.MarginBottom = 25
renderer.RenderingOptions.MarginLeft = 20
renderer.RenderingOptions.MarginRight = 20

' Set HTTP credentials if needed for protected resources
renderer.RenderingOptions.HttpLoginCredentials = New IronPdf.HttpLoginCredentials() With {
    .Username = "yourUsername",
    .Password = "yourPassword"
}

' Render HTML to PDF
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Professional Document</h1><p>Generated with IronPDF</p>")
pdf.SaveAs("ProfessionalDocument.pdf")
$vbLabelText   $csharpLabel

有关渲染选项的更多信息,请浏览我们的详细文档。

Icon Quote related to 如何使用新 API?

我最喜欢的这种库是 IronPDF。它允许快速高效地操作 PDF 文件。它还具有许多有价值的功能,比如导出为 PDF/A 格式和数字签名 PDF 文档。

Milan Jovanovic related to 如何使用新 API?

Milan Jovanovic

微软MVP

查看案例研究
Icon Quote related to 如何使用新 API?

IronOCR 意味着我们每年可以节省 $40,000 的人工处理成本,同时提高生产力,并释放资源用于高影响任务。我强烈推荐它。

Brent Matzelle related to 如何使用新 API?

Brent Matzelle

首席技术官,OPYN

查看案例研究
Icon Quote related to 如何使用新 API?

Iron Suite 在我们的运营中起着至关重要的作用。这些工具提高了业务各方面的效率,包括创建平面图和改善库存管理。

David Jones related to 如何使用新 API?

David Jones

首席软件工程师,Agorus Build

查看案例研究

如何应用像素完美的 Chrome 渲染?

本示例将为您提供像素完美的 PDF 文件,可用于最新的 Chrome 桌面浏览器的 "打印为 PDF "功能。 Chrome 浏览器的渲染引擎可确保您的 HTML 内容(包括复杂的 CSS 布局和 JavaScript 渲染元素)与在 Chrome 浏览器窗口中显示的内容完全一致。

:path=/static-assets/pdf/content-code-examples/how-to/ironpdf-2021-chrome-rendering-engine-eap-5.cs
using IronPdf;
using System.IO;

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

// Configure for pixel-perfect rendering
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.CssMediaType.Print;
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.RenderDelay = 500; // Wait for JavaScript to execute

// Load HTML from file
string htmlContent = File.ReadAllText("template.html");

// Include base URL for relative assets
renderer.RenderingOptions.BaseUrl = new Uri("file:///C:/your-project/assets/").AbsoluteUri;

// Render the HTML to PDF
var pdf = renderer.RenderHtmlAsPdf(htmlContent);

// Add metadata
pdf.MetaData.Author = "Your Company";
pdf.MetaData.Title = "Pixel-Perfect Document";
pdf.MetaData.CreationDate = DateTime.Now;

// Save the PDF
pdf.SaveAs("PixelPerfect.pdf");
Imports IronPdf
Imports System.IO

' Create a Chrome PDF renderer
Dim renderer As New ChromePdfRenderer()

' Configure for pixel-perfect rendering
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.CssMediaType.Print
renderer.RenderingOptions.EnableJavaScript = True
renderer.RenderingOptions.RenderDelay = 500 ' Wait for JavaScript to execute

' Load HTML from file
Dim htmlContent As String = File.ReadAllText("template.html")

' Include base URL for relative assets
renderer.RenderingOptions.BaseUrl = New Uri("file:///C:/your-project/assets/").AbsoluteUri

' Render the HTML to PDF
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)

' Add metadata
pdf.MetaData.Author = "Your Company"
pdf.MetaData.Title = "Pixel-Perfect Document"
pdf.MetaData.CreationDate = DateTime.Now

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

为确保完美呈现,请考虑使用我们的使用 Chrome 浏览器调试 HTML 指南,以获得最佳效果。

我应该考虑哪些改进?

我们建议使用 Iron 特有的改进功能来增强 PDF 生成工作流程:

  • 使用屏幕样式表打印 PDF。 它们更易于开发并且更忠于现有的网络资产。
  • 支持不同页面尺寸和方向的响应式布局。
  • 从 HTML 表单元素自动创建 PDF 表单。
  • 为专业文档实施自定义页眉和页脚
  • 添加水印,用于品牌或安全目的。
:path=/static-assets/pdf/content-code-examples/how-to/ironpdf-2021-chrome-rendering-engine-eap-6.cs
using IronPdf;

// Example showing recommended improvements such as responsive layout
var renderer = new ChromePdfRenderer();

// Enable responsive CSS
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.CssMediaType.Screen;
renderer.RenderingOptions.ViewPortWidth = 1024;

// Enable form creation from HTML forms
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;

// Add custom header
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    Height = 25,
    HtmlFragment = "<div style='text-align: center; font-size: 12px;'>Company Name - Confidential</div>",
    DrawDividerLine = true
};

// Add custom footer with page numbers
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
    Height = 25,
    HtmlFragment = "<center><i>{page} of {total-pages}</i></center>",
    DrawDividerLine = true
};

// Render HTML with form elements
string formHtml = @"
<html>
<body>
    <h1>Application Form</h1>
    <form>
        <label>Name: <input type='text' name='name' /></label><br/>
        <label>Email: <input type='email' name='email' /></label><br/>
        <label>Subscribe: <input type='checkbox' name='subscribe' /></label><br/>
        <button type='submit'>Submit</button>
    </form>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(formHtml);
pdf.SaveAs("FormDocument.pdf");
Imports IronPdf

' Example showing recommended improvements such as responsive layout
Dim renderer As New ChromePdfRenderer()

' Enable responsive CSS
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.CssMediaType.Screen
renderer.RenderingOptions.ViewPortWidth = 1024

' Enable form creation from HTML forms
renderer.RenderingOptions.CreatePdfFormsFromHtml = True

' Add custom header
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {
    .Height = 25,
    .HtmlFragment = "<div style='text-align: center; font-size: 12px;'>Company Name - Confidential</div>",
    .DrawDividerLine = True
}

' Add custom footer with page numbers
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter() With {
    .Height = 25,
    .HtmlFragment = "<center><i>{page} of {total-pages}</i></center>",
    .DrawDividerLine = True
}

' Render HTML with form elements
Dim formHtml As String = "
<html>
<body>
    <h1>Application Form</h1>
    <form>
        <label>Name: <input type='text' name='name' /></label><br/>
        <label>Email: <input type='email' name='email' /></label><br/>
        <label>Subscribe: <input type='checkbox' name='subscribe' /></label><br/>
        <button type='submit'>Submit</button>
    </form>
</body>
</html>"

Dim pdf = renderer.RenderHtmlAsPdf(formHtml)
pdf.SaveAs("FormDocument.pdf")
$vbLabelText   $csharpLabel

如何实现多线程和异步支持?

我们的Chrome渲染引擎的多线程和Async支持提供了优于以前版本的卓越性能。 新引擎从底层设计开始就能高效处理并发操作,是高吞吐量应用程序和网络服务的理想选择。

  • 对于企业级的多线程,在现有线程中使用ChromePdfRenderer,它将工作。 对于网络应用程序,这需要零设置。
  • 对于HTML到PDF的批量处理,使用内置的.NET Parallel.ForEach模式。
  • 我们提供所有渲染方法的ChromePdfRenderer.RenderHtmlAsPdfAsync

了解有关异步和多线程技术的更多信息,以获得最佳性能。

using IronPdf;
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Linq;

// Example of using async rendering for a single document
public async Task<byte[]> GeneratePdfAsync(string html)
{
    var renderer = new ChromePdfRenderer();
    var pdfDocument = await renderer.RenderHtmlAsPdfAsync(html);
    return pdfDocument.BinaryData;
}

// Example of batch processing with parallel execution
public async Task GenerateMultiplePdfsAsync(List<string> htmlDocuments)
{
    var renderer = new ChromePdfRenderer();

    // Process multiple documents in parallel
    var tasks = htmlDocuments.Select(async (html, index) =>
    {
        var pdf = await renderer.RenderHtmlAsPdfAsync(html);
        await pdf.SaveAsAsync($"Document_{index}.pdf");
    });

    await Task.WhenAll(tasks);
}

// Example using Parallel.ForEach for CPU-intensive batch processing
public void GeneratePdfsBatch(List<string> urls)
{
    Parallel.ForEach(urls, new ParallelOptions { MaxDegreeOfParallelism = 4 }, url =>
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf(url);
        pdf.SaveAs($"{Path.GetFileNameWithoutExtension(url)}.pdf");
    });
}
using IronPdf;
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Linq;

// Example of using async rendering for a single document
public async Task<byte[]> GeneratePdfAsync(string html)
{
    var renderer = new ChromePdfRenderer();
    var pdfDocument = await renderer.RenderHtmlAsPdfAsync(html);
    return pdfDocument.BinaryData;
}

// Example of batch processing with parallel execution
public async Task GenerateMultiplePdfsAsync(List<string> htmlDocuments)
{
    var renderer = new ChromePdfRenderer();

    // Process multiple documents in parallel
    var tasks = htmlDocuments.Select(async (html, index) =>
    {
        var pdf = await renderer.RenderHtmlAsPdfAsync(html);
        await pdf.SaveAsAsync($"Document_{index}.pdf");
    });

    await Task.WhenAll(tasks);
}

// Example using Parallel.ForEach for CPU-intensive batch processing
public void GeneratePdfsBatch(List<string> urls)
{
    Parallel.ForEach(urls, new ParallelOptions { MaxDegreeOfParallelism = 4 }, url =>
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf(url);
        pdf.SaveAs($"{Path.GetFileNameWithoutExtension(url)}.pdf");
    });
}
Imports IronPdf
Imports System.Threading.Tasks
Imports System.Collections.Generic
Imports System.Linq
Imports System.IO
Imports System.Threading

' Example of using async rendering for a single document
Public Async Function GeneratePdfAsync(html As String) As Task(Of Byte())
    Dim renderer As New ChromePdfRenderer()
    Dim pdfDocument = Await renderer.RenderHtmlAsPdfAsync(html)
    Return pdfDocument.BinaryData
End Function

' Example of batch processing with parallel execution
Public Async Function GenerateMultiplePdfsAsync(htmlDocuments As List(Of String)) As Task
    Dim renderer As New ChromePdfRenderer()

    ' Process multiple documents in parallel
    Dim tasks = htmlDocuments.Select(Async Function(html, index)
                                         Dim pdf = Await renderer.RenderHtmlAsPdfAsync(html)
                                         Await pdf.SaveAsAsync($"Document_{index}.pdf")
                                     End Function)

    Await Task.WhenAll(tasks)
End Function

' Example using Parallel.ForEach for CPU-intensive batch processing
Public Sub GeneratePdfsBatch(urls As List(Of String))
    Parallel.ForEach(urls, New ParallelOptions With {.MaxDegreeOfParallelism = 4}, Sub(url)
                                                                                      Dim renderer As New ChromePdfRenderer()
                                                                                      Dim pdf = renderer.RenderUrlAsPdf(url)
                                                                                      pdf.SaveAs($"{Path.GetFileNameWithoutExtension(url)}.pdf")
                                                                                  End Sub)
End Sub
$vbLabelText   $csharpLabel

下一步是什么?

哪些功能即将推出?

IronPDF 团队会根据客户反馈和行业趋势不断开发新功能并进行改进。 以下是我们的路线图:

Ultra-Slim 部署用于Azure FunctionsAWS Lambda*。 我们的目标是提供尽可能减少磁盘占用的部署选项。 请查看我们当前的 AWS 部署指南,了解现有解决方案。

  • 为 iOS 和 Android 应用程序开发人员提供移动呈现支持,扩展我们的跨平台能力。
  • IE 和 Firefox 渲染选项,以兼容旧系统。
  • 多服务器分布式渲染架构,适用于需要可扩展 PDF 生成的大型企业用户。
  • 重新设计的内部 PDF 文档对象模型可支持最广泛的 PDF 标准。 我们的目标是以优雅的方式处理阅读和自动修复损坏和编码不良的 PDF 文档。 探索我们当前的 PDF 压缩功能。
  • "{YourIdeaHere}"来自客户的功能请求和错误报告将被转至堆栈顶部。

请查看我们的产品更新和里程碑,了解我们的最新动态。

联系我们以获得更多查询,并提出任何建议或问题。 您的意见有助于 IronPDF 的未来发展!

常见问题解答

C# 在将 HTML 转换为 PDF 时使用什么渲染引擎?

IronPDF 使用 Chrome 的 Blink 渲染引擎,该技术与 Google Chrome、Microsoft Edge 和其他现代浏览器相同。这确保了在您的 .NET 应用程序中将 HTML 转换为 PDF 时的像素精确度。

如何用 C# 将 HTML 快速转换为 PDF?

有了 IronPDF,您只需几行代码就能将 HTML 转换为 PDF。只需创建一个 ChromePdfRenderer 实例,使用 RenderHtmlAsPdf 方法渲染 HTML 内容,然后使用 SaveAs 方法保存生成的 PDF。

使用基于 Chrome 浏览器的 PDF 渲染器有哪些性能优势?

与直接使用浏览器和网络驱动程序相比,IronPDF 的性能要快 5-20 倍,尤其适用于 SAAS 和高负载应用程序。它提供轻松的多线程和异步操作,可根据需要利用尽可能多的 CPU 内核以获得最佳性能。

Chrome 浏览器的渲染引擎支持现代网络标准吗?

是的,IronPDF 的 Chrome 渲染引擎完全支持现代 CSS 功能、动态 JavaScript 内容和复杂布局。它提供 Chrome 相同渲染或增强渲染选项,可生成准确、专业的 PDF。

渲染质量对 PDF 文档有何影响?

IronPDF 的高质量渲染直接影响文档的可读性、品牌表现力和用户体验。Chrome 渲染引擎可确保复杂布局和现代网络功能的准确渲染,与用户在浏览器中看到的内容相匹配。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

准备开始了吗?
Nuget 下载 20,296,129 | 版本: 2026.7 刚刚发布
Still Scrolling Icon

还在滚动吗?

想快速获得证据? PM > Install-Package IronPdf
运行示例看着你的HTML代码变成PDF文件。