Преобразование изображения в PDF (сжатие / загрузка одной страницы) - PullRequest
0 голосов
/ 05 июля 2018

Пожалуйста, не отмечайте это как дубликат, потому что я пробовал много вещи, написанные в StackOverflow / Google, и вещи не сработали.

Мои требования :

Конвертируйте HTML div в изображение и конвертируйте изображение в PDF. Так что в настоящее время я могу конвертировать HTML div в Image и частично успешно конвертировать это изображение в PDF.

Я использую JsPDF для преобразования изображения в PDF.

Ниже приведен код у меня 2 случая:

  1. Где генерируется pdf, но изображение очень сжато.
  2. Там, где нет усадки, но генерируется только одна страница.

Ниже я поделился изображениями обоих этих случаев .. !!!

Плз, помогите мне с этим вопросом.

<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 голосов
/ 03 февраля 2019

То же самое здесь, попробовал все, что мог, но никто из них не работал. Преобразовать чистое изображение в pdf путем изменения размера изображения намного проще, чем преобразование html-страницы в pdf. В настоящее время jsPDF предлагает использовать doc.html() вместо addHtml().

Во всяком случае, в итоге я использовал A3 вместо A4.

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

...