如何将 HTML 转换为字符串以在 JavaScript 中生成 PDF?
How can I convert HTML to string for PDF generation in JavaScript?
我想将我的 HTML DOM 元素转换为字符串,以便我可以将其用于生成 Pdf。
我在 JavaScript 中尝试了以下代码,但它 returns 是一个 HTML 元素。
function getHtmlString() {
var element=document.getElementById("pdfdiv");
var str = element.innerHTML;
console.log(str);
return str;
};
<div id="pdfdiv">
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<!--<h3 style="margin-left:150px;"><strong> Patient Details</strong></h3>-->
<table width="100%" style="padding:0px 105px">
<thead>
<tr>
<th>
</th>
</tr>
<tr>
<th>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<table style="float:left" width="75%">
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>
"Hi" @order.Id
</td>
<td>
<h2><strong> Patient Order</strong></h2>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</body>
</html>
</div>
这个returns以下:
<!--!-->
<html><!--!-->
<!--!-->
<meta charset="utf-8">
<title></title>
<body><!--!-->
<table width="100%" style="padding:0px 105px"><!--!-->
<!--!--><thead>
<tr>
<th>
</th>
</tr>
<tr>
<th>
</th>
</tr>
</thead>
<tbody><!--!-->
<tr><!--!-->
<td><!--!-->
<table style="float:left" width="75%"><!--!-->
<!--!--><thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody><!--!-->
<tr><!--!-->
<td><!--!-->
"Hi" 4<!--!-->
</td><!--!-->
<!--!--><td>
<h2><strong> Patient Order</strong></h2>
</td>
</tr><!--!-->
</tbody><!--!-->
</table><!--!-->
</td><!--!-->
</tr><!--!-->
</tbody><!--!-->
</table><!--!-->
</body><!--!-->
因此,我无法通过将此字符串传递给 PdfDocument document = htmlConverter.Convert(htmlstring);
来转换为 PDF。它抛出 Error: Syncfusion.Pdf.PdfException: Html conversion failed
的异常。如何将 HTML DOM 元素转换为字符串?
根据您的 JavaScript 设置方式,您的代码实际上 是 返回一个字符串。
看到这里:
var element=document.getElementById("pdfdiv");
var str = element.innerHTML;
console.log(str)
console.log("The variable type is...")
console.log(typeof(str))
<div id="pdfdiv">Make me into a string, please!</div>
解决方案很可能在于您似乎正在使用的库:Syncfusion。根据文档,Convert()
函数将 URL 作为参数,而不是 HTML 字符串。这就是导致程序抛出错误的原因。
我建议列出您在代码中使用的所有库,以便将来在 Whosebug 上提出问题。
HTML 转换器中报告的异常可能是由于在 URL 转换方法中转换 HTML 字符串所致。带有单个参数的 convert 方法用于 URL 到 PDF 的转换。请参考以下代码片段将 HTML 字符串转换为 PDF。请尝试使用以下代码片段进行转换,并让我们知道结果。
//Convert HTML string to PDF
PdfDocument document = htmlConverter.Convert(htmlText, baseUrl);
请参考以下链接了解更多信息,
UG: https://help.syncfusion.com/file-formats/pdf/convert-html-to-pdf/webkit#html-string-to-pdf
KB: https://www.syncfusion.com/kb/9890/how-to-convert-html-string-to-pdf-using-c-and-net
https://www.syncfusion.com/kb/8174/how-to-preserve-resources-during-html-string-to-pdf-conversion
注意 : 我为 Syncfusion 工作。
我想将我的 HTML DOM 元素转换为字符串,以便我可以将其用于生成 Pdf。
我在 JavaScript 中尝试了以下代码,但它 returns 是一个 HTML 元素。
function getHtmlString() {
var element=document.getElementById("pdfdiv");
var str = element.innerHTML;
console.log(str);
return str;
};
<div id="pdfdiv">
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<!--<h3 style="margin-left:150px;"><strong> Patient Details</strong></h3>-->
<table width="100%" style="padding:0px 105px">
<thead>
<tr>
<th>
</th>
</tr>
<tr>
<th>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<table style="float:left" width="75%">
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>
"Hi" @order.Id
</td>
<td>
<h2><strong> Patient Order</strong></h2>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</body>
</html>
</div>
这个returns以下:
<!--!-->
<html><!--!-->
<!--!-->
<meta charset="utf-8">
<title></title>
<body><!--!-->
<table width="100%" style="padding:0px 105px"><!--!-->
<!--!--><thead>
<tr>
<th>
</th>
</tr>
<tr>
<th>
</th>
</tr>
</thead>
<tbody><!--!-->
<tr><!--!-->
<td><!--!-->
<table style="float:left" width="75%"><!--!-->
<!--!--><thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody><!--!-->
<tr><!--!-->
<td><!--!-->
"Hi" 4<!--!-->
</td><!--!-->
<!--!--><td>
<h2><strong> Patient Order</strong></h2>
</td>
</tr><!--!-->
</tbody><!--!-->
</table><!--!-->
</td><!--!-->
</tr><!--!-->
</tbody><!--!-->
</table><!--!-->
</body><!--!-->
因此,我无法通过将此字符串传递给 PdfDocument document = htmlConverter.Convert(htmlstring);
来转换为 PDF。它抛出 Error: Syncfusion.Pdf.PdfException: Html conversion failed
的异常。如何将 HTML DOM 元素转换为字符串?
根据您的 JavaScript 设置方式,您的代码实际上 是 返回一个字符串。
看到这里:
var element=document.getElementById("pdfdiv");
var str = element.innerHTML;
console.log(str)
console.log("The variable type is...")
console.log(typeof(str))
<div id="pdfdiv">Make me into a string, please!</div>
解决方案很可能在于您似乎正在使用的库:Syncfusion。根据文档,Convert()
函数将 URL 作为参数,而不是 HTML 字符串。这就是导致程序抛出错误的原因。
我建议列出您在代码中使用的所有库,以便将来在 Whosebug 上提出问题。
HTML 转换器中报告的异常可能是由于在 URL 转换方法中转换 HTML 字符串所致。带有单个参数的 convert 方法用于 URL 到 PDF 的转换。请参考以下代码片段将 HTML 字符串转换为 PDF。请尝试使用以下代码片段进行转换,并让我们知道结果。
//Convert HTML string to PDF
PdfDocument document = htmlConverter.Convert(htmlText, baseUrl);
请参考以下链接了解更多信息,
UG: https://help.syncfusion.com/file-formats/pdf/convert-html-to-pdf/webkit#html-string-to-pdf
KB: https://www.syncfusion.com/kb/9890/how-to-convert-html-string-to-pdf-using-c-and-net
https://www.syncfusion.com/kb/8174/how-to-preserve-resources-during-html-string-to-pdf-conversion
注意 : 我为 Syncfusion 工作。