#javascript #mobile #viewport #jspdf #html2canvas
Вопрос:
Я использую jspdf для сохранения страницы на моем сайте в формате pdf. На рабочем столе это выглядит великолепно. С другой стороны, на мобильных устройствах, поскольку пропорции совершенно разные, pdf-файл, который я получаю, искажен и в нем отсутствуют важные элементы. Короче говоря, ничего, с чем я мог бы работать. Вы можете увидеть это на моем сайте: https://ohad-shaked-cv.web.app/
Код, который отвечает за создание pdf-файла, выглядит следующим образом:
html2canvas(document.body)
.then((canvas) => {
const imgData = canvas.toDataURL('image/png', 0.75);
const imgProps = page.getImageProperties(imgData);
const pdfWidth = page.internal.pageSize.getWidth();
const pdfHeight = (imgProps.height * pdfWidth) / imgProps.width;
page.addImage(imgData, 'png', 0, 15, pdfWidth, pdfHeight,'','FAST');
page.save('My C.V.pdf');
});
Ответ №1:
Вы можете изменить видовое окно перед вызовом html2canvas, а затем вернуть ему прежнее значение.
document.querySelector('meta[name=viewport]').setAttribute("content", "width=1200");
Ознакомьтесь с этим вопросом на github для получения дополнительной информации.