我正在用 jsPDF 做一个小项目。我需要编写彩色文本、更改字体大小并使用粗体文本。因此 fromHtml 是我的选择,因为我可以使用 css 和 html 轻松完成。
问题是只有大约一半的页面可用于使用 fromHtml 编写。如果它试图在它之外写入,则会创建一个新页面并将文本写入那里。
这是一个带有 javascript 代码的小 html 示例,可以自行运行。
<!DOCTYPE html>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.5.3/jspdf.debug.js" integrity="sha384-NaWTHo/8YCBYJ59830LTz/P4aQZK1sS0SneOgAvhsIl3zBu8r9RevNg5lHCHAuQ/" crossorigin="anonymous"></script>
<script type="text/javascript">
function fromHtmlTest() {
var doc = new jsPDF({
orientation: 'l',
unit: 'px',
format: [30, 30]
});
// doc.setFontSize(1); // the workaround for this problem
var toWrite = ["1st", "2nd", "3rd", "4th", "5th", "6th", "7th", "8th"];
for (var i = 0; i < toWrite.length; i++) {
doc.fromHTML(
'<div style="font-size:1">' + toWrite[i] + '</div>'
, 1 // x
, i // y
, {
'width': 10,
'elementHandlers': {}
}
)
}
doc.save('Test.pdf');
}
</script>
<body>
<input type="button" value="Start" onclick="fromHtmlTest()" />
</body>
这是运行代码后的pdf图像:
fromHtml 示例 - 代码结果
“8th”应该在“7th”的正下方,而不是在下一页。如果将“9th”添加到数组中,也会添加另一个页面。
如何使用 fromHtml 使用整个页面?
编辑:作为解决方法“doc.setFontSize(1);” 成功了。我已将其作为注释添加到示例代码中。