common.ts 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import html2canvas from "html2canvas";
  2. import printJS from "print-js";
  3. /**
  4. * html转图片
  5. * @param printContent 传入一个ref
  6. * @param callback
  7. */
  8. export const htmlToCanvas = (
  9. printContent: HTMLElement,
  10. callback: (url: string) => void
  11. ) => {
  12. // // 获取dom 宽度 高度
  13. // const width = printContent.clientWidth;
  14. // const height = printContent.clientHeight;
  15. // // 创建一个canvas节点
  16. // const canvas = document.createElement("canvas");
  17. //
  18. // const scale = 1; // 定义任意放大倍数,支持小数;越大,图片清晰度越高,生成图片越慢。
  19. // canvas.width = width * scale; // 定义canvas 宽度 * 缩放
  20. // canvas.height = height * scale; // 定义canvas高度 *缩放
  21. // canvas.style.width = width * scale + "px";
  22. // canvas.style.height = height * scale + "px";
  23. // canvas.getContext("2d").scale(scale, scale); // 获取context,设置scale
  24. //
  25. // const scrollTop =
  26. // document.documentElement.scrollTop || document.body.scrollTop; // 获取滚动轴滚动的长度
  27. // const scrollLeft =
  28. // document.documentElement.scrollLeft || document.body.scrollLeft; // 获取水平滚动轴的长度
  29. html2canvas(printContent)
  30. .then((canvas) => {
  31. const url = canvas.toDataURL("image/png");
  32. callback(url);
  33. })
  34. .catch((err) => {
  35. console.error(err);
  36. });
  37. };
  38. /**
  39. * 用printJs打印图片
  40. * @param url
  41. * @param callback
  42. */
  43. export const printImg = (url: string) => {
  44. printJS({
  45. printable: url,
  46. type: "image",
  47. documentTitle: "", // 标题
  48. style: "@page{size:auto;margin: 1cm ;}", // 去除页眉页脚
  49. });
  50. };
  51. /**
  52. * html转图片打印
  53. * @param dom
  54. * @param callback
  55. */
  56. export const html2CanvasPrint = (dom: HTMLElement, callback?: () => {}) => {
  57. //1、html转图片
  58. htmlToCanvas(dom, (url: string) => {
  59. //2、打印图片
  60. printImg(url);
  61. });
  62. };