From 4ec6b73fb3f014bb3eac74bbd32987ab82791545 Mon Sep 17 00:00:00 2001 From: Jeff Emmett <46964190+Jeff-Emmett@users.noreply.github.com> Date: Sun, 8 Dec 2024 13:39:07 -0500 Subject: [PATCH] PrintToPDF working --- src/utils/pdfUtils.ts | 32 +++++++++++++------------------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/src/utils/pdfUtils.ts b/src/utils/pdfUtils.ts index 269af35..1722058 100644 --- a/src/utils/pdfUtils.ts +++ b/src/utils/pdfUtils.ts @@ -15,29 +15,17 @@ export const saveToPdf = async (editor: Editor) => { const blob = await exportToBlob({ editor, ids: selectedIds, - format: "svg", + format: "png", opts: { scale: 2, background: true, padding: 10, - preserveAspectRatio: "xMidYMid slice", + preserveAspectRatio: "true", }, }) if (!blob) return - // Convert blob to data URL - const url = URL.createObjectURL(blob) - - // Create image from blob - const img = new Image() - img.src = url - - await new Promise((resolve, reject) => { - img.onload = resolve - img.onerror = reject - }) - // Create PDF with proper dimensions const pdf = new jsPDF({ orientation: selectionBounds.width > selectionBounds.height ? "l" : "p", @@ -45,19 +33,25 @@ export const saveToPdf = async (editor: Editor) => { format: [selectionBounds.width, selectionBounds.height], }) + // Convert blob directly to base64 + const reader = new FileReader() + const imageData = await new Promise((resolve, reject) => { + reader.onload = () => resolve(reader.result as string) + reader.onerror = reject + reader.readAsDataURL(blob) + }) + // Add the image to the PDF pdf.addImage( - img, - "SVG", + imageData, + "PNG", 0, 0, selectionBounds.width, selectionBounds.height, ) - pdf.save("canvas-selection.pdf") - // Cleanup - URL.revokeObjectURL(url) + pdf.save("canvas-selection.pdf") } catch (error) { console.error("Failed to generate PDF:", error) alert("Failed to generate PDF. Please try again.")