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