aboutsummaryrefslogtreecommitdiff
path: root/packages/merchant-backoffice-ui/src
diff options
context:
space:
mode:
authorNullptrderef <nullptrderef@proton.me>2024-08-11 19:33:56 +0200
committerNullptrderef <nullptrderef@proton.me>2024-08-11 19:33:56 +0200
commit6307c6d661836512ba91adc4eb03cd5af40dd47b (patch)
tree8ef9c919f34bf9a2858d4ccc9b5f364103407bcb /packages/merchant-backoffice-ui/src
parente0e4fb390f6dbf5267169d7a993c7c21f200dea2 (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.tsx28
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>&nbsp;</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);
});
}