import html2canvas from "html2canvas";
import jspdf from "jspdf";
export async function exportPDF(option) {
  const dom = option.dom;
  let fileName = option.fileName;
  if (!dom) return
  let height = "";
  // 获取dom元素
  let dom1 = dom.querySelector(".d-cont");
  try {
    if (dom1) {
      height = dom1.style.height;
      dom1.style.height = "auto";
    }

    if (dom) {
      html2canvas(dom).then(async (canvas) => {
        // A4纸，纵向
        let pdf = new jspdf("p", "mm", "a4");
        let ctx = canvas.getContext("2d");
        let a4w = 190;
        // A4大小，210mm x 297mm，四边各保留10mm的边距，显示区域190x277
        let a4h = 277;
        // 按A4显示比例换算一页图像的像素高度
        let imgHeight = Math.floor((a4h * canvas.width) / a4w);
        let renderedHeight = 0;
        while (renderedHeight < canvas.height) {
          let page = document.createElement("canvas");
          page.width = canvas.width;
          // 可能内容不足一页
          page.height = Math.min(imgHeight, canvas.height - renderedHeight);
          // 用getImageData剪裁指定区域，并画到前面创建的canvas对象中
          page
            .getContext("2d")
            .putImageData(
              ctx.getImageData(
                0,
                renderedHeight,
                canvas.width,
                Math.min(imgHeight, canvas.height - renderedHeight)
              ),
              0,
              0
            );
          // 添加图像到页面，保留10mm边距
          pdf.addImage(
            page.toDataURL("image/jpeg", 1.0),
            "JPEG",
            10,
            10,
            a4w,
            Math.min(a4h, (a4w * page.height) / page.width)
          );

          renderedHeight += imgHeight;
          if (renderedHeight < canvas.height) {
            // 如果后面还有内容，添加一个空页
            pdf.addPage();
          }
          // delete page;
        }
        // 保存文件
        pdf.save(`${fileName}.pdf`);
      });
    }
  } catch (err) {
    console.log(err);
  } finally {
    if (dom1) dom1.style.height = height;
  }
}
