diff --git a/apps/fronted/src/components/editor/PdfExport.tsx b/apps/fronted/src/components/editor/PdfExport.tsx index 0636b52..a3cc518 100644 --- a/apps/fronted/src/components/editor/PdfExport.tsx +++ b/apps/fronted/src/components/editor/PdfExport.tsx @@ -2,9 +2,8 @@ import React, { useState } from "react"; import { motion } from "framer-motion"; import { Download, Loader2 } from "lucide-react"; +import html2pdf from "html2pdf.js"; import { useResumeStore } from "@/store/useResumeStore"; -import dynamic from "next/dynamic"; -const html2pdf = dynamic(() => import("html2pdf.js"), { ssr: false }); export function PdfExport() { const { basic, theme } = useResumeStore(); @@ -13,9 +12,12 @@ export function PdfExport() { const handleExport = () => { setIsExporting(true); const element = document.querySelector("#resume-preview"); + if (!element) { + setIsExporting(false); return; } + const opt = { margin: [10, 10, 10, 10], filename: `${basic.name}_简历.pdf`, @@ -31,21 +33,28 @@ export function PdfExport() { orientation: "portrait" } }; - const res = html2pdf().set(opt).from(element).save(); - setIsExporting(false); - return res; + + html2pdf() + .set(opt) + .from(element) + .save() + .then((res) => { + return res; + }) + .catch((error) => { + console.error("PDF export failed:", error); + return { notFound: true }; + }) + .finally(() => { + setIsExporting(false); + return { finally: true }; + }); }; return (