new IronPdf.ChromePdfRenderer { RenderingOptions = { EnableJavaScript = true, WaitFor = IronPdf.Rendering.WaitFor.JavaScript() } }
.RenderHtmlAsPdf("<h1>Start</h1><script>document.write('<h1>Generated by JS</h1>');window.ironpdf.notifyRender();</script>")
.SaveAs("js-rendered.pdf");
Dim renderer As New IronPdf.ChromePdfRendererWith { .RenderingOptions = New IronPdf.PdfRendering.PdfRenderingOptions() With { .EnableJavaScript = True, .WaitFor = IronPdf.Rendering.WaitFor.JavaScript() } }renderer.RenderHtmlAsPdf("<h1>Start</h1><script>document.write('<h1>Generated by JS</h1>');window.ironpdf.notifyRender();</script>").SaveAs("js-rendered.pdf")
Dim renderer As New IronPdf.ChromePdfRenderer With { .RenderingOptions = New IronPdf.PdfRendering.PdfRenderingOptions() With { .EnableJavaScript = True, .WaitFor = IronPdf.Rendering.WaitFor.JavaScript() } }
renderer.RenderHtmlAsPdf("<h1>Start</h1><script>document.write('<h1>Generated by JS</h1>');window.ironpdf.notifyRender();</script>").SaveAs("js-rendered.pdf")
在渲染选项中使用Javascript属性在渲染之前执行自定义JavaScript。 这有助于在无法注入 JavaScript 的情况下呈现 URL。 将JavaScript代码分配给渲染选项的Javascript属性。 结合 async PDF 生成处理多个文档。
using IronPdf;ChromePdfRenderer renderer = new ChromePdfRenderer();// JavaScript coderenderer.RenderingOptions.Javascript = @"document.querySelectorAll('h1').forEach(function(el){ el.style.color='red';})";// Render HTML to PDFPdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Happy New Year!</h1>");pdf.SaveAs("executed_js.pdf");
using IronPdf;
ChromePdfRenderer renderer = new ChromePdfRenderer();
// JavaScript code
renderer.RenderingOptions.Javascript = @"
document.querySelectorAll('h1').forEach(function(el){
el.style.color='red';
})";
// Render HTML to PDF
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Happy New Year!</h1>");
pdf.SaveAs("executed_js.pdf");
ImportsIronPdfPrivate renderer As New ChromePdfRenderer()' JavaScript coderenderer.RenderingOptions.Javascript = "document.querySelectorAll('h1').forEach(function(el){ el.style.color='red';})"' Render HTML to PDFDim pdf AsPdfDocument = renderer.RenderHtmlAsPdf("<h1>Happy New Year!</h1>")pdf.SaveAs("executed_js.pdf")
Imports IronPdf
Private renderer As New ChromePdfRenderer()
' JavaScript code
renderer.RenderingOptions.Javascript = "
document.querySelectorAll('h1').forEach(function(el){
el.style.color='red';
})"
' Render HTML to PDF
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Happy New Year!</h1>")
pdf.SaveAs("executed_js.pdf")
何时应使用自定义 JavaScript 注入?
在无法修改 HTML 源代码的情况下,自定义 JavaScript 注入可用于呈现 URL。 常见用途:
using IronPdf;using System;ChromePdfRenderer renderer = new ChromePdfRenderer();// Method callback to be invoked whenever a browser console message becomes available:renderer.RenderingOptions.JavascriptMessageListener = message => Console.WriteLine($"JS: {message}");// Log 'foo' to the consolerenderer.RenderingOptions.Javascript = "console.log('foo');";// Render HTML to PDFPdfDocument pdf = renderer.RenderHtmlAsPdf("<h1> Hello World </h1>");//--------------------------------------------------//// Error will be logged// message => Uncaught TypeError: Cannot read properties of null (reading 'style')renderer.RenderingOptions.Javascript = "document.querySelector('non-existent').style.color='foo';";// Render HTML to PDFPdfDocument pdf2 = renderer.RenderHtmlAsPdf("<h1> Hello World </h1>");
using IronPdf;
using System;
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Method callback to be invoked whenever a browser console message becomes available:
renderer.RenderingOptions.JavascriptMessageListener = message => Console.WriteLine($"JS: {message}");
// Log 'foo' to the console
renderer.RenderingOptions.Javascript = "console.log('foo');";
// Render HTML to PDF
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1> Hello World </h1>");
//--------------------------------------------------//
// Error will be logged
// message => Uncaught TypeError: Cannot read properties of null (reading 'style')
renderer.RenderingOptions.Javascript = "document.querySelector('non-existent').style.color='foo';";
// Render HTML to PDF
PdfDocument pdf2 = renderer.RenderHtmlAsPdf("<h1> Hello World </h1>");
ImportsIronPdfImportsSystemPrivate renderer As New ChromePdfRenderer()' Method callback to be invoked whenever a browser console message becomes available:renderer.RenderingOptions.JavascriptMessageListener = Sub(message) Console.WriteLine($"JS: {message}")' Log 'foo' to the consolerenderer.RenderingOptions.Javascript = "console.log('foo');"' Render HTML to PDFDim pdf AsPdfDocument = renderer.RenderHtmlAsPdf("<h1> Hello World </h1>")'--------------------------------------------------//' Error will be logged' message => Uncaught TypeError: Cannot read properties of null (reading 'style')renderer.RenderingOptions.Javascript = "document.querySelector('non-existent').style.color='foo';"' Render HTML to PDFDim pdf2 AsPdfDocument = renderer.RenderHtmlAsPdf("<h1> Hello World </h1>")
Imports IronPdf
Imports System
Private renderer As New ChromePdfRenderer()
' Method callback to be invoked whenever a browser console message becomes available:
renderer.RenderingOptions.JavascriptMessageListener = Sub(message) Console.WriteLine($"JS: {message}")
' Log 'foo' to the console
renderer.RenderingOptions.Javascript = "console.log('foo');"
' Render HTML to PDF
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1> Hello World </h1>")
'--------------------------------------------------//
' Error will be logged
' message => Uncaught TypeError: Cannot read properties of null (reading 'style')
renderer.RenderingOptions.Javascript = "document.querySelector('non-existent').style.color='foo';"
' Render HTML to PDF
Dim pdf2 As PdfDocument = renderer.RenderHtmlAsPdf("<h1> Hello World </h1>")
为什么要监控 JavaScript 控制台消息?
控制台监控有助于调试 JavaScript 错误并跟踪 PDF 生成过程中的执行情况。 必不可少:
识别阻止渲染的 JavaScript 错误
跟踪复杂的 JavaScript 操作进度
调试异步代码时序问题
验证自定义 JavaScript 的执行
收集 JavaScript 性能指标
可以捕获哪些类型的消息?
监听器捕获自定义console.log消息和包括在内的JavaScript错误:
控制台输出:error()
未捕获异常和运行时错误
来自失败资源的网络错误
浏览器引擎报废警告
自定义调试信息
我最喜欢的这种库是 IronPDF。它允许快速高效地操作 PDF 文件。它还具有许多有价值的功能,比如导出为 PDF/A 格式和数字签名 PDF 文档。
What JavaScript chart libraries are compatible with IronPDF?
Compatible JavaScript chart libraries with IronPDF include Chart.js, Highcharts, D3.js, C3.js, and ApexCharts. These libraries can be used to create dynamic charts in HTML that are then converted to PDF using IronPDF.