我正在尝试使用 jsPDF 利用 JavaScript 创建 PDF 文件。我有一个小测试页面。基本上,我有一个下载 PDF 按钮,它会从一个 span 中获取 base64 图像,并将其用于
imgData
。然后我尝试将该图像数据addImage
添加到 pdf 中,然后保存它。一切似乎都正常,它生成了 PDF 并提示进行下载。但是,当我尝试使用 xpdf 或 Foxit reader 查看 PDF 时,告诉我 PDF 文件已损坏。我是不是创建这个 PDF 的方式有误? 我的网页相当长,所以我把它放在了 Pastebin 上。<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript" src="js/jquery/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="js/jquery/jquery-ui-1.8.17.custom.min.js"></script>
<script type="text/javascript" src="../jspdf.js"></script>
<script type="text/javascript" src="../libs/FileSaver.js/FileSaver.js"></script>
<script type="text/javascript" src="../libs/BlobBuilder.js/BlobBuilder.js"></script>
<script type="text/javascript" src="../jspdf.plugin.addimage.js"></script>
<script type="text/javascript" src="../jspdf.plugin.standard_fonts_metrics.js"></script>
<script type="text/javascript" src="../jspdf.plugin.split_text_to_size.js"></script>
<script type="text/javascript" src="../jspdf.plugin.from_html.js"></script>
<script type="text/javascript" src="js/basic.js"></script>
<title>Sup!</title>
<script>
function changeCan() {
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
ctx.fillStyle="#FF0000";
ctx.fillRect(0,0,128,128);
}
function changeCan3() {
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
ctx.fillStyle="#FFFFFF";
ctx.fillRect(0,0,128,128);
var image = new Image();
image.src = document.getElementById("3span").innerHTML;
ctx.drawImage(image,0,0);
}
function changeCan4() {
var imgData = document.getElementById("3span").innerHTML;
window.alert(imgData.length);
var doc = new jsPDF();
doc.addImage(imgData, 'JPEG', 15, 40, 128, 128);
doc.save('Test.pdf');
}
</script>
</head>
<body>
Yo!<hr>
<canvas id="myCanvas" width="128" height="128"></canvas><hr>
<button type="button" onClick="changeCan()">Change Me To Red!</button>
<button type="button" onClick="changeCan3()">Change Me To Span!</button>
<button type="button" onClick="changeCan4()">Download Me!</button>
<hr>
<span id="3span" style="display:none;">B64 DATA HERE</span>
</body>
</html>
3span
DIVдёӯпјҢinnerHTMLеҢ…еҗ«data:image/jpeg;base64,
гҖӮиҝҷжҳҜеҝ…йңҖзҡ„еҗ—пјҹеҸӘжҳҜдёҖдёӘжғіжі•пјҢжҲ‘дёҚзҹҘйҒ“иҝҷдёӘjsPDFеә“пјҢдҪҶжҲ‘еҫҲж„ҹе…ҙи¶ЈпјҢжҲ‘еҫҲеҝ«е°ұдјҡйңҖиҰҒе®ғ :) - JScoobyCed[object Uint8Array]
。所以我猜它不是损坏了,而是某些东西没有完全生成。我不能提供更多帮助,因为我需要先阅读关于jsPDF的资料,而现在无法做到。祝好运。 - JScoobyCed