Javascript Html2Canvas drawImage分割图像时图像质量损失

Javascript Html2Canvas drawImage分割图像时图像质量损失,javascript,html2canvas,pdfmake,Javascript,Html2canvas,Pdfmake,我有一个需要将html页面导出为pdf的函数,我正在尝试使用pdfmake和html2canvas来实现这一点。我遇到的问题是,当图像太大,无法容纳一页时,它会转移到另一页,留下大量空白。因此,我使用一个函数将图像分割为多个图像,以防初始图像太大 当前的问题是,当我拆分一幅图像时,只有在拆分两幅图像时,两幅新图像都非常模糊,并且无法理解,即使它们在创建的pdf中的位置正确。这个问题只发生在我分割图像时,而不是当所有内容都放在一个页面上时(因此没有调用drawImage) 以下是我用于拆分的函数:

我有一个需要将html页面导出为pdf的函数,我正在尝试使用pdfmake和html2canvas来实现这一点。我遇到的问题是,当图像太大,无法容纳一页时,它会转移到另一页,留下大量空白。因此,我使用一个函数将图像分割为多个图像,以防初始图像太大

当前的问题是,当我拆分一幅图像时,只有在拆分两幅图像时,两幅新图像都非常模糊,并且无法理解,即使它们在创建的pdf中的位置正确。这个问题只发生在我分割图像时,而不是当所有内容都放在一个页面上时(因此没有调用drawImage)

以下是我用于拆分的函数:

function splitImage(img, content, callback, selectedFilter, currentTime, currentReference, fileName) {
      return function() {
        const canvas = document.createElement('canvas');
        const ctx = canvas.getContext('2d');
        ctx.imageSmoothingEnabled = false;
        const printHeight = (img.height * currentReference.PAGE_WIDTH) / img.width;

        canvas.width = currentReference.PAGE_WIDTH;

        for (let pages = 0; printHeight > pages * currentReference.PAGE_HEIGHT; pages++) {
          /* Don't use full height for the last image */
          canvas.height = Math.min(currentReference.PAGE_HEIGHT, printHeight - pages * currentReference.PAGE_HEIGHT);
          ctx.drawImage(
            img,
            0,
            Math.round(-pages * currentReference.PAGE_HEIGHT),
            Math.round(currentReference.PAGE_WIDTH),
            Math.round(printHeight)
          );
          content.push({
            image: canvas.toDataURL(),
            margin: [0, 5],
            width: currentReference.PAGE_WIDTH
          });
        }
        currentReference.downloadPdf(selectedFilter, currentTime, currentReference, fileName, content);
        callback();
      };
    }
我使用的img的初始宽度和高度如下

img.height
2691
img.width
1532
页面宽度和页面高度参数具有以下值

public PAGE_HEIGHT = 705;
public PAGE_WIDTH = 550;
我试着使用scale:2当我最初使用html2canvas函数时,我试着使用imageSmoothingEnabled=false,正如你在代码中看到的,我试着使用答案(这使得一切变得更加模糊)

如何避免新图像的质量损失