diff options
author | Nullptrderef <nullptrderef@proton.me> | 2024-08-11 19:33:56 +0200 |
---|---|---|
committer | Nullptrderef <nullptrderef@proton.me> | 2024-08-11 19:33:56 +0200 |
commit | 6307c6d661836512ba91adc4eb03cd5af40dd47b (patch) | |
tree | 8ef9c919f34bf9a2858d4ccc9b5f364103407bcb /packages/merchant-backoffice-ui/src | |
parent | e0e4fb390f6dbf5267169d7a993c7c21f200dea2 (diff) |
fix: use a half decent pdf saving mechanism
Diffstat (limited to 'packages/merchant-backoffice-ui/src')
-rw-r--r-- | packages/merchant-backoffice-ui/src/paths/instance/templates/qr/QrPage.tsx | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/templates/qr/QrPage.tsx b/packages/merchant-backoffice-ui/src/paths/instance/templates/qr/QrPage.tsx index f66fdaa83..c66361e17 100644 --- a/packages/merchant-backoffice-ui/src/paths/instance/templates/qr/QrPage.tsx +++ b/packages/merchant-backoffice-ui/src/paths/instance/templates/qr/QrPage.tsx @@ -87,21 +87,25 @@ export function QrPage({ id: templateId, onBack }: Props): VNode { function saveAsPDF(name: string): void { // TODO: Look into using media queries in the current page, to print the current page, instead of opening a new window - const printWindow = window.open("", "", "height=400,width=800"); - if (!printWindow) return; + const divContents = document.getElementById("printThis"); if (!divContents) return; - printWindow.document.write( - `<!DOCTYPE html><html><head><title>Order template for ${name}</title><style>`, - ); - printWindow.document.write("</style></head><body> </body></html>"); - printWindow.document.close(); - printWindow.document.body.appendChild(divContents.cloneNode(true)); + + let dom = `<!DOCTYPE html> +<html> + <head> + <title>Order template for ${name}</title> + </head> + <body> + ${divContents.outerHTML} + </body> +</html>`; + const blobUrl = URL.createObjectURL(new Blob([dom])); + const printWindow = window.open(blobUrl, "", "height=400,width=800"); + if (!printWindow) return; printWindow.addEventListener("load", () => { printWindow.print(); - - // Why is the close commented out? Print is synchronous - // ~ Nullptrderef - // printWindow.close(); + printWindow.close(); + URL.revokeObjectURL(blobUrl); }); } |