我正在嘗試使用jsPDF使用JavaScript創建PDF文件。我有一個測試頁面。基本上我有一個下載PDF按鈕,它從一個跨度獲取base64映像,並將其用於imgData
。然後我嘗試將addImage
圖像數據寫入pdf,然後保存。一切似乎都奏效,它會生成PDF並提示下載。但是,當我嘗試使用xpdf或Foxit閱讀器查看PDF時,我被告知PDF已損壞。 我是不是創建此PDF不正確?我的網頁很長,所以我把它放在Pastebin上。jsPDF損壞的PDF文件?
<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包含'數據:圖像/ JPEG; BASE64,'。它是必需的嗎?只是一個想法,我不知道這個jsPDF庫,但我很感興趣,我將很快需要這個:) – JScoobyCed
那麼'data:image/jpeg; base64,'部分似乎對測試頁的不同部分來說是必須的我在鬼混,這是改變帆布笑人的圖形。同樣在jsPDF網頁http://jspdf.com/上,如果您願意的話,貓圖像的例子顯示'data:image/jpeg; base64,'「header」。 @JScoobyCed所以我不完全確定是否需要它,我可以嘗試快速刪除它並生成另一個PDF! – 0xhughes
@JScoobyCed我快速刪除了base64數據中的大量信息,並且畫布和PDF都出錯了。我不太擔心畫布,只是爲了笑。 PDF雖然沒有工作,但這是錯誤的FireBug吐,'getJpegSize無法找到圖像的大小 [Break On This Error]拋出新的錯誤('getJpegSize找不到圖像的大小'); 「我從他的庫中查看了.js文件中的代碼,我無法確切地知道它在做什麼。抓住某些字符,變得長久,並用這些信息做一些數學運算。 – 0xhughes