Hi,
PDF=True just shows a 404 page whenever I add it to the URL. Has this been discontinued? Or could it be something else I should do. I am doing an upgrade from dw9 to dw10, and they use this functionality. I am on 10.14.3
//jan
Developer forum
E-mail notifications
PDF=True

Jan Sangill










Posted on 13/05/2025 08:27:17
Replies


Nicolai Pedersen










Posted on 13/05/2025 10:12:55
Hi Jan
Dynamicweb 10 does not support pdf=true - in DW9 it was build on tech that requires a full chrome browser server side and we cannot support that in DW10.
Also a lot has happened on PDF generation since that was originally made - it is very simple to create the PDF directly in the browser using html2pdf.js, pdf.js etc.
Using htmltopdf.js
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.9.2/html2pdf.bundle.min.js"></script> <button id="download">Download PDF</button> <script> document.getElementById('download').addEventListener('click', () => { const url = 'https://example.com'; // ← your URL here fetch(url) .then(res => res.text()) .then(html => { const wrapper = document.createElement('div'); wrapper.style.width = '800px'; // control page width wrapper.innerHTML = html; document.body.appendChild(wrapper); html2pdf() .from(wrapper) .set({ margin: 10, filename: 'page.pdf', image: { type: 'jpeg', quality: 0.98 }, html2canvas: { scale: 2 }, jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrait' } }) .save() .finally(() => document.body.removeChild(wrapper)); }) .catch(console.error); }); </script>
An alternative - little more low level:
Using jsPDF + html2canvas
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script> <button id="download2">Download PDF</button> <script> const { jsPDF } = window.jspdf; document.getElementById('download2').addEventListener('click', async () => { const url = 'https://example.com'; // ← your URL const res = await fetch(url); const html = await res.text(); const wrapper = document.createElement('div'); wrapper.style.width = '800px'; wrapper.innerHTML = html; document.body.appendChild(wrapper); const canvas = await html2canvas(wrapper, { scale: 2 }); const imgData = canvas.toDataURL('image/jpeg', 0.98); const pdf = new jsPDF('p', 'mm', 'a4'); const pdfWidth = pdf.internal.pageSize.getWidth(); const imgProps = pdf.getImageProperties(imgData); const pdfHeight = (imgProps.height * pdfWidth) / imgProps.width; pdf.addImage(imgData, 'JPEG', 0, 0, pdfWidth, pdfHeight); pdf.save('page.pdf'); document.body.removeChild(wrapper); }); </script>

Jan Sangill










Posted on 13/05/2025 10:15:20
Hi Nicolai, Thank you for the response. Appreciated. It is noted. And it makes sense.


Nicolai Pedersen










Posted on 13/05/2025 10:17:33
Also - here is an example using print mode - printing the page you are on and then use CSS to hide e.g. print buttons and other things you need to hide:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>html2pdf + Print-Mode Example</title> <!-- html2pdf bundle (includes html2canvas + jsPDF) --> <script src="https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.9.2/html2pdf.bundle.min.js"></script> <style> /* print-mode styles: applied only when generating the PDF */ .print-mode #export-pdf { display: none !important; } .print-mode body { /* make fonts a bit smaller in PDF */ font-size: 12pt; line-height: 1.5; } .print-mode h2 { /* force page-breaks before each section */ page-break-before: always; } </style> </head> <body> <h1>My Awesome Page</h1> <p>This content will go into the PDF—without the button.</p> <!-- Fixed-position button (hidden in PDF via .print-mode) --> <button id="export-pdf" style="position:fixed;top:1rem;right:1rem;z-index:1000;"> Download PDF </button> <script> const button = document.getElementById('export-pdf'); const opts = { margin: 10, filename: 'this-page.pdf', image: { type: 'jpeg', quality: 0.98 }, html2canvas: { scale: 2 }, jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrait' } }; button.addEventListener('click', () => { // 1. turn on our print-mode styles document.documentElement.classList.add('print-mode'); // 2. generate & save PDF from the whole body html2pdf() .from(document.body) .set(opts) .save() .finally(() => { // 3. clean up: turn off print-mode styles document.documentElement.classList.remove('print-mode'); }); }); </script> </body> </html>
You must be logged in to post in the forum