html2canvas to render document PDF with css styling using angular2/typescript

眉间皱痕 提交于 2019-11-29 18:35:57

问题


How to generate an output file PDF using html2canvas with angular2

I tried to import the file html2canvas typescript and made a declaration like this to use it

declare let html2canvas: Html2CanvasStatic;

but I get html2canvas is not defined

html2canvas(document.body, {
  onrendered: function(canvas) {
    document.body.appendChild(canvas);
  }
});

I found this file typescript on github html2canvas typescript

how can use this for my application angular2


回答1:


I could use html2canvas with the followings changes:

package.json:

 "dependencies": {
     "html2canvas": "0.5.0-beta4",
     "@types/html2canvas": "0.5.32",
 }

After using npm install I could use html2canvas in my component.ts files like this:

import * as html2canvas from "html2canvas"

test() {
    html2canvas(document.body, {
        onrendered: function(canvas) {
        var img = canvas.toDataURL()
        window.open(img);
     }
    });

}

Without installing @types/html2canvasI could use the lib via require but not via the import:

html2canvas = require('hmtl2canvas');



回答2:


If you are using Angular 4 you can include html2canvas under scripts list in .angular-cli.json as below

"scripts": [
    "../node_modules/html2canvas/dist/html2canvas.min.js"
]

After that import it in your class as below

import * as html2canvas from "html2canvas"

and then use it in your functions as below

html2canvas(parameters);



回答3:


In 2018:

html2canvas(document.body).then((canvas) => {
    window.open().document.write('<img src="' + canvas.toDataURL() + '" />');
  });



回答4:


This is in addition to above answer, i.e. add @types/html2canvas to dependencies and add import statement in your code.

However, using the above sample code, I am getting error in VisualStudioCode i.e.

'onrendered' does not exist in type 'Html2CanvasOptions'.

To resolve that, I used "then" as below:

html2canvas(document.body).then((canvas) => {
  document.body.appendChild(canvas);
});



回答5:


myClickFunction(event: any) {
html2canvas(event.target)
  .then((canvas) => {
    var img = canvas.toDataURL()
    window.open(img);
  })
  .catch(err => {
    console.log("error canvas", err);
  });
}


来源:https://stackoverflow.com/questions/38998844/html2canvas-to-render-document-pdf-with-css-styling-using-angular2-typescript

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!