Вы инициализировали jsPDF для использования 'pt' по умолчанию
const pdf = new jsPDF("p", "pt", "A4");
Но полученное изображение в пикселях. А приведенная ниже строка кода обрабатывает ширину и высоту как pt (точки)
pdf.addImage (canvasDataURL, "PNG", 0, 0, ширина, высота);
1 Point = 1.333333 Pixel
1 px = 0.75 point
Надеюсь, это поможет:
pdf.addImage(canvasDataURL, "PNG", 0, 0, width * 0.75, height * 0.75);
Так что в вашем случае изображение становится больше. Вам нужно просто умножить ширину / высоту (в пикселях) на 0,75, чтобы получить размер в точках. Вы также должны учитывать дополнительные поля, которые вы даете вокруг изображения, и вычитать его и преобразовывать это число в пиксели, иначе изображение может выглядеть обрезанным.
Справочник по API: https://artskydj.github.io/jsPDF/docs/module-addImage.html# ~ addImage
Параметры:
width number
width of the image (in units declared at inception of PDF document)
height number
height of the Image (in units declared at inception of PDF document)
Вот в чем я проблема. Может быть, вы можете попробовать. Надеюсь, это поможет!