将图像转换为PDF(缩小/加载一页)

时间:2018-07-05 04:46:43

标签: javascript jquery angular pdf jspdf

  

请不要将其标记为重复,因为我尝试了很多   在StackOverflow / Google上编写的内容以及其他内容均无法解决。

我的要求

将HTML div转换为图像并将图像转换为PDF。 因此,目前我能够将HTML div转换为Image并将该Image转换为PDF部分成功。

我正在使用 JsPDF 将图像转换为PDF。

下面是我有2种情况的代码:

  1. 在生成pdf的地方,但是图像缩小了。
  2. 没有收缩的地方,但是只生成一页。

下面我分享了这两种情况的图像.. !!!

Plz,请帮我解决这个问题。

<script type="text/javascript">
 $(document).ready(function () {
	 setTimeout(function(){
		 downloadImage();
	 },1000)
 });
 
 var base64 = "";
 function downloadImage(){

	 //Case 1: Where the image gets shrinked.
	    html2canvas(document.querySelector("#dvContainer")).then(canvas => {
		a = document.createElement('a'); 
		document.body.appendChild(a); 
		base64 = canvas.toDataURL();
		var doc = new jsPDF();
	    var image = base64;
	    doc.addImage(image, 'JPEG', 10, 10, 180, 160);
	    doc.save('Report');
	});	

 	//Case 2: Where only 1 page gets loaded.
        html2canvas(document.querySelector("#dvContainer")).then(canvas => {
	    a = document.createElement('a'); 
		document.body.appendChild(a); 
		base64 = canvas.toDataURL(wid = canvas.width, hgt = canvas.height);
		var doc = new jsPDF('p','pt','a4');
		var image = base64;
		var hratio = hgt/wid;
		var width = doc.internal.pageSize.width;    
        var height = width * hratio;
	    doc.addImage(image, 'JPEG',20,20, width, height);
	    doc.save('Report');
	});	
 }
  
</script>

CASE 1 CASE 2

1 个答案:

答案 0 :(得分:0)

在这里,尽我所能,但没有一个起作用。通过调整图像大小将纯图像转换为pdf比将html页面转换为pdf容易得多。当前jsPDF建议使用doc.html()代替addHtml()

无论如何,最后,我最终使用了A3而不是A4。

let doc = new jsPDF('p','pt','a3');