Vueはページを画像またはPDFにエクスポートします。


本論文の実例はVue導出ページがPDF形式の具体的なコードであることを共有しています。
画像としてエクスポート
1.ページhtmlを画像に変換する

npm install html2canvas --save
2.エクスポートするページにインポートする

import html2canvas from 'html2canvas';
methodsに方法を追加します。

dataURLToBlob(dataurl) {//ie      
    var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
     bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
    while (n--) {
     u8arr[n] = bstr.charCodeAt(n);
    }
    return new Blob([u8arr], {type: mime})
    },
  downloadResult(name) {
    let canvasID = document.body
    let a = document.createElement('a');
    html2canvas(canvasID).then(canvas => {
     let dom = document.body.appendChild(canvas);
     dom.style.display = "none";
     a.style.display = "none";
     document.body.removeChild(dom);
     let blob = this.dataURLToBlob(dom.toDataURL("image/png"));
     a.setAttribute("href", URL.createObjectURL(blob));
     a.setAttribute("download", name + ".png")
     document.body.appendChild(a);
     a.click();
     URL.revokeObjectURL(blob);
     document.body.removeChild(a);
    });
    },
   printOut(name) {
   //                    ,         
    $(window).scrollTop(0); // jQuery    
    document.body.scrollTop = 0; // IE 
    document.documentElement.scrollTop = 0; //   
    this.downloadResult(name)
  },
PDFとしてエクスポート
1.ページhtmlを画像に変換する

npm install html2canvas --save
2.画像をpdfに生成する

npm install jspdf --save
3.エクスポートするページにインポートする

import html2canvas from 'html2canvas';
import JsPDF from 'jspdf'
methodsに方法を追加します。

printOut(name) {
  let shareContent = document.body,//        (   )DOM   
   width = shareContent.clientWidth, //  dom   
   height = shareContent.clientHeight, //  dom   
   canvas = document.createElement("canvas"), //    canvas  
   scale = 2; //             
  canvas.width = width * scale; //  canvas    *   
  canvas.height = height * scale; //  canvas   *  
  canvas.style.width = shareContent.clientWidth * scale + "px";
  canvas.style.height = shareContent.clientHeight * scale + "px";
  canvas.getContext("2d").scale(scale, scale); //  context,  scale
  let opts = {
   scale: scale, //    scale   
   canvas: canvas, //    canvas
   logging: false, //    ,    html2canvas       
   width: width, //dom     
   height: height,
   useCORS: true, // 【  】      
  };

  html2Canvas(shareContent, opts).then(() => {
   var contentWidth = canvas.width;
   var contentHeight = canvas.height;
   //  pdf  html     canvas  ;
   var pageHeight = (contentWidth / 592.28) * 841.89;
   //   pdf html    
   var leftHeight = contentHeight;
   //    
   var position = 0;
   //a4    [595.28,841.89],html     canvas pdf      
   var imgWidth = 595.28;
   var imgHeight = (592.28 / contentWidth) * contentHeight;
   var pageData = canvas.toDataURL("image/jpeg", 1.0);
   var PDF = new JsPDF("", "pt", "a4");
   if (leftHeight < pageHeight) {
   PDF.addImage(pageData, "JPEG", 0, 0, imgWidth, imgHeight);
   } else {
   while (leftHeight > 0) {
    PDF.addImage(pageData, "JPEG", 0, position, imgWidth, imgHeight);
    leftHeight -= pageHeight;
    position -= 841.89;
    if (leftHeight > 0) {
    PDF.addPage();
    }
   }
   }
   PDF.save(name + ".pdf"); //          
  });
  },
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。