Set Firefox view to 120% then run code in console. // TrustedURL starting let trustedURL; if (window.trustedTypes && trustedTypes.createPolicy) { const policy = trustedTypes.createPolicy('myPolicy', { createScriptURL: (input) => input }); trustedURL = policy.createScriptURL('https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.5.3/jspdf.debug.js'); } else { trustedURL = 'https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.5.3/jspdf.debug.js'; } // Download script starting let jspdf = document.createElement("script"); jspdf.onload = function () { // Initialize PDF with first size let pdf = new jsPDF('p', 'mm', 'a4'); let elements = document.getElementsByTagName("img"); for (let i = 0; i < elements.length; i++) { let img = elements[i]; if (!/^blob:/.test(img.src)) { console.log("invalid src"); continue; } let can = document.createElement('canvas'); let con = can.getContext("2d"); can.width = 1600; can.height = 2263; con.drawImage(img, 0, 0); let imgData = can.toDataURL("image/jpeg", 1.0); // First 3 images: large custom size if (i < 3) { if (i !== 0) pdf.addPage('a4'); pdf.setPage(pdf.getNumberOfPages()); // Go to the newly added A4 page // pdf.addImage(imgData, 'JPEG',0 , 0, 1200 * 0.17, 1200 * 1.414 *0.17); pdf.addImage(imgData, 'JPEG',0 , 0, 1200 * 0.17, 1200 * 1.414 * 0.17); } // Rest: A4 else { pdf.addPage('a4'); pdf.setPage(pdf.getNumberOfPages()); // Go to the newly added A4 page pdf.addImage(imgData, 'JPEG',0 , 0, 1200 * 0.17, 1200 * 1.414 * 0.17); } } let title = document.title.trim(); // Remove ".pdf - Google Drive" if it exists title = title.replace(/\.pdf\s*-\s*Google Drive/i, ""); // Replace any invalid filename characters let filename = title.replace(/[\\\/:*?"<>|]+/g, "_").trim() + ".pdf"; pdf.save(filename); }; jspdf.src = trustedURL; document.body.appendChild(jspdf);