如何在 Chrome 浏览器中调试 HTML 以创建像素完美的 PDF

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

作为 IronPDF 的开发者,我们深知用 IronPDF 制作的 PDF 文档不仅需要完美的外观,还需要符合客户的期望。要使您的 PDF 看起来像素完美,您需要开发出色的 HTML 模板或与 Web 开发人员合作来完成。IronPDF 可根据您的 HTML 将 PDF 呈现为完美像素,并且由于使用了 Chrome 渲染器,PDF 在 Chrome 浏览器中的显示效果与 PDF 完全相同。

什么是 IronPDF 的 Chrome 渲染器?

它使 IronPDF 与其他 .NET PDF 库相比独一无二

IronPDF 在市场上与众不同,因为它使用了 Google Chromium 渲染器,这意味着您在 Chrome 浏览器中看到的 HTML 将与您在我们的 PDF 中看到的完全相同。在本教程中,我们将指导您在 Chrome 浏览器和 IronPDF 中进行一些设置,以实现这一目标。

需要明确的是,许多竞争对手宣称的 "HTML 转 PDF "技术并不符合 W3C 标准,甚至不支持 HTML5、CSS3 或 JavaScript,它们使用的底层呈现器包括 wkhtmltopdf.

IronPDF 与竞争对手的比较

IronPDF

IronPDF

香草铬

香草铬

Aspose.PDF

Aspose.PDF

wkhtmltopdf

wkhtmltopdf

要查看与其他产品比较的完整列表,请参阅我们的 博客.

特点 IronPDF 的 Chrome 浏览器渲染器 Aspose 与 IronPDF iText 与 IronPDF

IronPDF 的优化 Chrome 渲染器优于 Chrome 浏览器

IronPDF 超越 Chrome 浏览器本身的两个例子。使用 Chrome 浏览器时,按钮和文本会被分割到两个页面上,而使用 IronPDF 时则保持不变。

在 Chrome 浏览器中按钮和文本被截断的示例:

在 Chrome 浏览器中关闭按钮,但在 IronPDF 中未关闭按钮

Chrome 浏览器中文字被截断的另一个示例:

文本在 Chrome 浏览器中被截断,但在 IronPDF 中没有被截断

为何使用 HTML 转 PDF?

开发人员喜欢 HTML 转 PDF,因为它能提供与现有网络品牌相匹配的可预测结果。设计使用文档齐全的标准化 HTML、CSS 和 JavaScript 技术实现。

  • 输出的布局和设计与网站完全匹配。
  • 网站开发人员可以专注于绝对精确的设计。

  • .NET 开发人员可以专注于应用程序逻辑而不是布局。 后端开发人员可将布局和设计任务委托给网页设计师。

1.决定使用 CSS 媒体类型打印或屏幕

IronPDF 的渲染器有两种媒体渲染选项:打印(默认)** 和 Screen。请参阅本教程末尾的并排比较。在 "屏幕和打印示例的比较 "部分。

  • CssMediaType.Print "是默认的渲染选项,可优化 HTML,使其适合在打印机上使用。这意味着页面上的一些背景图片、图标和其他油墨较多的元素可能会以不同的方式呈现或被省略。该选项适用于没有背景图像的文档,也是默认的打印预览。

  • CssMediaType.Screen "是一种呈现选项,可让 PDF 文件在 Chrome 浏览器的屏幕上呈现出完全相同的效果。您需要在 Chrome 浏览器中设置一些选项,以使打印预览与 IronPDF 为 HTML 调试而呈现的效果完全一致。
:path=/static-assets/pdf/content-code-examples/tutorials/pixel-perfect-html-to-pdf-1.cs
// Pixel Perfect HTML Formatting Settings
IronPdf.ChromePdfRenderer renderer = new IronPdf.ChromePdfRenderer();
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print; // or Screen
' Pixel Perfect HTML Formatting Settings
Dim renderer As New IronPdf.ChromePdfRenderer()
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print ' or Screen
VB   C#

重复表头

如果您的 HTML 包含一个跨页的表格,您可能希望表头在每个 PDF 页面上重复出现。

  • 在这种情况下,您只能***使用Print CssMediaType。

  • 使用 Screen 会指示 Chrome 浏览器只打印一次表头。

屏幕和打印示例的比较

许多图像和图标在打印模式下无法加载,而在屏幕模式下可以加载:

打印示例 1

屏幕 1 示例

2.设置 Chrome 浏览器

IronPDF 荣幸地使用了 Chrome 浏览器渲染引擎。请按照以下步骤操作,以便 IronPDF 在 Chrome 浏览器中准确呈现您的 HTML。要实现这一点,需要事先在 Chrome 浏览器中完成以下几个步骤。

要使 Pixel Perfect PDF 包括所有图像、图标和背景(通常在打印格式中会省略),请务必使用 "屏幕 "CSS 媒体选项。

2a.打开 DevTools,在 Chrome 浏览器中将启用模拟 CSS 媒体设置为屏幕/打印

1.为此,请在 Chrome 浏览器中 打开 DevTools.

<img src="/static-assets/pdf/tutorials/pixel-perfect-html-to-pdf/open_devtools.gif" alt="在 Chrome 浏览器中使用 "检查" class="img-responsive add-shadow" style="margin-bottom: 30px;">

  1. 按 Command+Shift+P (Mac) 或 Control+Shift+P (Windows、Linux、ChromeOS) 打开命令菜单。开始键入 rendering(渲染),选择 Show Rendering(显示渲染),然后按 Enter。DevTools 会在 DevTools 窗口底部显示 "渲染 "选项卡。 (更多帮助)
转到显示渲染,然后查找 CSS 媒体类型
  1. 向下导航,找到 "Emulate CSS media "的下拉菜单,然后选择 "Screen"(屏幕)或 "Print"(打印)选项。如果您在网页上,可能需要重新加载 (Ctrl+R) 设置才能生效。
切换到 CSS 媒体类型 打印
切换到 CSS 媒体类型屏幕

2b.打开打印预览窗口 (在 Windows 上按 Ctrl+P)

您可能需要更改纸张大小,并在 Chrome 浏览器打印对话框中启用 "打印背景图像",以获得准确的显示效果。

2c.设置正确的打印预览设置

  • 请选择您在 IronPDF 项目中使用的纸张尺寸,如 "A4 "或 "Letter"。
  • 在 "页边距 "下拉菜单中选择 "自定义",并将四边都设置为 (1") 一英寸边距。
  • 启用 "背景图形 "复选框。
  • 如果要输出横向文档,请确保将 "布局 "设置为 "横向"。

仅此而已。现在,您可以调试 HTML 并使用打印预览来查看 IronPDF 将如何呈现您的布局。

3.设置 IronPDF

3a.在 IronPDF 中设置 CSS 媒体类型

为了 100% 精确地匹配网页设计,我们必须在代码中选择与在 Chrome 浏览器中设置的相同的 CSS 媒体类型。

请记住,"PdfCssMediaType.Screen "包含背景和较大的图片,而 "PdfCssMediaType.Print "格式可能会省略这些内容。

:path=/static-assets/pdf/content-code-examples/tutorials/pixel-perfect-html-to-pdf-2.cs
// Example using PdfCssMediaType.Screen
IronPdf.ChromePdfRenderer renderer = new IronPdf.ChromePdfRenderer();
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen; // or Print
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
' Example using PdfCssMediaType.Screen
Dim renderer As New IronPdf.ChromePdfRenderer()
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen ' or Print
renderer.RenderingOptions.PrintHtmlBackgrounds = True
VB   C#

3b.适当设置渲染延迟和渲染超时

IronPDF 的默认渲染超时时间为 60 秒。如果不编辑渲染选项,处理时间超过 60 秒的内容将无法渲染。

要覆盖默认设置,需要调整 RenderingOptions.Timeout 选项。

请注意,如果没有设置超时或渲染延迟时间超过了设置的超时时间,将会产生 "无法渲染 PDF"异常。因此,如果遇到这种错误,可能需要增加这些值。

:path=/static-assets/pdf/content-code-examples/tutorials/pixel-perfect-html-to-pdf-3.cs
// Example of setting Timeout and RenderDelay options
renderer.RenderingOptions.Timeout = 90; // seconds (default is 60)
renderer.RenderingOptions.WaitFor.RenderDelay(30000); // milliseconds
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#