Hướng dẫn how to use html2canvas in typescript - cách sử dụng html2canvas trong typecript

Thêm vào gói.json

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

Chạy cài đặt NPM.

Bạn có thể gặp phải lỗi liên quan đến lỗi HTML2Canvas không tìm thấy hoặc không xác định. Để giải quyết vấn đề này với SystemJS:

   map: {

  // angular bundles
  '@angular/core': 'npm:@angular/core/bundles/core.umd.js',
  ...............

  // other libraries
  'rxjs': 'npm:rxjs',
  'angular-in-memory-web-api': 'npm:angular-in-memory-web-api/bundles/in-memory-web-api.umd.js',
  'html2canvas': 'npm:html2canvas' //for html canvas
 }
packages: {
  .................
   rxjs: {
     defaultExtension: 'js'
   },
   html2canvas: {
     main:'./dist/html2canvas.js',
     defaultExtension: 'js'
   }
 }

Bây giờ bạn sẽ có tài liệu tham khảo đầy đủ của HTML2Canvas.

Tôi đã tạo ra hình ảnh như đối tượng Data và Blob của hình ảnh.

HTML:

 

Mã bảng tính:

 import { Component, ViewChild, ElementRef } from '@angular/core';
 import * as html2canvas from 'html2canvas';
 export class AppComponent {
 @ViewChild('container') container: ElementRef;
 snapShot() {
     let dataURI = this.createThumbnail(this.container.nativeElement);
 }

createThumbnail(blockelement: any) {
let element = blockelement.querySelector('#imgtag');
console.log(element, 'element')
if (element !== null && element !== undefined) {
  html2canvas(element).then(function (canvas: any) {
    let dataURI = canvas.toDataURL();
    console.log('img', dataURI);

    let blobObject = this.dataURItoBlob(dataURI);
    console.log('img', blobObject);
    //this.AddImagesResource(blobObject) your case
    //AddImagesResource will call the service method which can
    //post this blob object as multipart file
    //this formdata and httppost call should in service layer,in your case its imagesService.
    /*
      let formData = new FormData();
      formData.append('file', blobObject);
      console.log(formData, 'formData');
      return this.http.post(API_URL.saveThumbnailURL, formData).map((res: Response) => {
      console.log(res);
      return res.json();
    })        */
     }.bind(this));
   }
 }
  dataURItoBlob(dataURI: string) {
  let byteString: any;
  if (dataURI.split(',')[0].indexOf('base64') >= 0)
    byteString = atob(dataURI.split(',')[1]);
  else
    byteString = decodeURI(dataURI.split(',')[1]);

  // separate out the mime component
  let mimeString: any = dataURI.split(',')[0].split(':')[1].split(';')[0];

  // write the bytes of the string to a typed array
  let blob: any = new Uint8Array(byteString.length);
  for (let i = 0; i < byteString.length; i++) {
    blob[i] = byteString.charCodeAt(i);
  }
  return new Blob([blob], {
    type: mimeString
  });
}
}

Bạn có thể gửi đối tượng StringData/Blob này đến máy chủ dưới dạng tệp đa dạng bằng FormData.

Hy vọng điều này sẽ giúp

HTML2Canvas

Trang chủ | Tải xuống | Câu hỏi

Hướng dẫn how to use html2canvas in typescript - cách sử dụng html2canvas trong typecript

Kết xuất JavaScript HTML

Kịch bản cho phép bạn chụp "ảnh chụp màn hình" các trang web hoặc các phần của nó, trực tiếp trên trình duyệt người dùng. Ảnh chụp màn hình dựa trên DOM và do đó có thể không chính xác 100% cho biểu diễn thực vì nó không tạo ảnh chụp màn hình thực tế, nhưng xây dựng ảnh chụp màn hình dựa trên thông tin có sẵn trên trang.

Làm thế nào nó hoạt động?

Kịch bản hiển thị trang hiện tại dưới dạng hình ảnh canvas, bằng cách đọc DOM và các kiểu khác nhau được áp dụng cho các yếu tố.

Nó không yêu cầu bất kỳ kết xuất nào từ máy chủ, vì toàn bộ hình ảnh được tạo trên trình duyệt của máy khách. Tuy nhiên, vì nó phụ thuộc rất nhiều vào trình duyệt, thư viện này không phù hợp để được sử dụng trong nodejs. Nó cũng không phá vỡ bất kỳ hạn chế chính sách nội dung nào, vì vậy, kết xuất nội dung có nguồn gốc chéo sẽ yêu cầu proxy để đưa nội dung đến cùng một nguồn gốc.not require any rendering from the server, as the whole image is created on the client's browser. However, as it is heavily dependent on the browser, this library is not suitable to be used in nodejs. It doesn't magically circumvent any browser content policy restrictions either, so rendering cross-origin content will require a proxy to get the content to the same origin.

Kịch bản vẫn ở trạng thái rất thử nghiệm, vì vậy tôi không khuyên bạn nên sử dụng nó trong môi trường sản xuất cũng như không bắt đầu xây dựng các ứng dụng với nó, vì vẫn sẽ có những thay đổi lớn được thực hiện.very experimental state, so I don't recommend using it in a production environment nor start building applications with it yet, as there will be still major changes made.

Tính tương thích của trình duyệt web

Thư viện sẽ hoạt động tốt trên các trình duyệt sau (với polyfill Promise):

  • Firefox 3.5+
  • Google Chrome
  • Opera 12+
  • IE9+
  • Safari 6+

Vì mỗi thuộc tính CSS cần được xây dựng thủ công để được hỗ trợ, có một số thuộc tính chưa được hỗ trợ.

Cách sử dụng

Thư viện HTML2Canvas sử dụng Promise và hy vọng chúng sẽ có sẵn trong bối cảnh toàn cầu. Nếu bạn muốn hỗ trợ các trình duyệt cũ hơn không hỗ trợ Promise, vui lòng bao gồm một polyfill như ES6-Promise trước khi bao gồm

   map: {

  // angular bundles
  '@angular/core': 'npm:@angular/core/bundles/core.umd.js',
  ...............

  // other libraries
  'rxjs': 'npm:rxjs',
  'angular-in-memory-web-api': 'npm:angular-in-memory-web-api/bundles/in-memory-web-api.umd.js',
  'html2canvas': 'npm:html2canvas' //for html canvas
 }
packages: {
  .................
   rxjs: {
     defaultExtension: 'js'
   },
   html2canvas: {
     main:'./dist/html2canvas.js',
     defaultExtension: 'js'
   }
 }
1.

Để hiển thị

   map: {

  // angular bundles
  '@angular/core': 'npm:@angular/core/bundles/core.umd.js',
  ...............

  // other libraries
  'rxjs': 'npm:rxjs',
  'angular-in-memory-web-api': 'npm:angular-in-memory-web-api/bundles/in-memory-web-api.umd.js',
  'html2canvas': 'npm:html2canvas' //for html canvas
 }
packages: {
  .................
   rxjs: {
     defaultExtension: 'js'
   },
   html2canvas: {
     main:'./dist/html2canvas.js',
     defaultExtension: 'js'
   }
 }
2 với HTML2Canvas, chỉ cần gọi:
   map: {

  // angular bundles
  '@angular/core': 'npm:@angular/core/bundles/core.umd.js',
  ...............

  // other libraries
  'rxjs': 'npm:rxjs',
  'angular-in-memory-web-api': 'npm:angular-in-memory-web-api/bundles/in-memory-web-api.umd.js',
  'html2canvas': 'npm:html2canvas' //for html canvas
 }
packages: {
  .................
   rxjs: {
     defaultExtension: 'js'
   },
   html2canvas: {
     main:'./dist/html2canvas.js',
     defaultExtension: 'js'
   }
 }
3

Hàm trả về một lời hứa chứa phần tử

   map: {

  // angular bundles
  '@angular/core': 'npm:@angular/core/bundles/core.umd.js',
  ...............

  // other libraries
  'rxjs': 'npm:rxjs',
  'angular-in-memory-web-api': 'npm:angular-in-memory-web-api/bundles/in-memory-web-api.umd.js',
  'html2canvas': 'npm:html2canvas' //for html canvas
 }
packages: {
  .................
   rxjs: {
     defaultExtension: 'js'
   },
   html2canvas: {
     main:'./dist/html2canvas.js',
     defaultExtension: 'js'
   }
 }
4. Chỉ cần thêm một người xử lý thực hiện lời hứa vào lời hứa bằng cách sử dụng
   map: {

  // angular bundles
  '@angular/core': 'npm:@angular/core/bundles/core.umd.js',
  ...............

  // other libraries
  'rxjs': 'npm:rxjs',
  'angular-in-memory-web-api': 'npm:angular-in-memory-web-api/bundles/in-memory-web-api.umd.js',
  'html2canvas': 'npm:html2canvas' //for html canvas
 }
packages: {
  .................
   rxjs: {
     defaultExtension: 'js'
   },
   html2canvas: {
     main:'./dist/html2canvas.js',
     defaultExtension: 'js'
   }
 }
5:

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

Tòa nhà

Bạn có thể tải xuống các bản dựng sẵn sàng ở đây.

Kho lưu trữ Clone Git:

$ git clone git://github.com/niklasvh/html2canvas.git

Cài đặt phụ thuộc:

$ npm install

Xây dựng gói trình duyệt

$ npm run build

Ví dụ

Để biết thêm thông tin và ví dụ, vui lòng truy cập trang chủ hoặc thử bảng điều khiển thử nghiệm.

Đóng góp

Nếu bạn muốn đóng góp cho dự án, xin vui lòng gửi các yêu cầu kéo đến chi nhánh phát triển. Trước khi gửi bất kỳ thay đổi nào, hãy thử và kiểm tra xem các thay đổi có hoạt động với tất cả các trình duyệt hỗ trợ. Nếu một số thuộc tính CSS không được hỗ trợ hoặc không đầy đủ, vui lòng tạo các thử nghiệm phù hợp cho nó trước khi gửi bất kỳ thay đổi mã nào.

Làm cách nào để thêm html2canvas?

Tạo hàm chụp màn hình () trong đó khởi tạo html2canvas trên cơ thể.Theo mặc định, HTML2Canvas đặt màu nền hình thành màu đen nếu lưu ảnh chụp màn hình.Với việc sử dụng nền: '#FFF' Đặt nền trắng.Được chụp ảnh chụp màn hình URL Base64 url bằng cách sử dụng vải.. By default, html2canvas set the image background color to black if save the screenshot. With the use of background: '#fff' set background white. Get taken screenshot image base64 URL using canvas.

Làm cách nào để sử dụng canvas2image?

Sử dụng html2canvas.js để chụp ảnh màn hình của một div cụ thể và sau đó sử dụng canvas2image.js để tải xuống ảnh chụp màn hình dưới dạng hình ảnh cục bộ vào hệ thống tập tin của bạn. js to take a screenshot of a specific div and then use canvas2image. js to download the screenshot as an image locally to your filesystem.