"use client"; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Printer, FileDown, FileText } from "lucide-react"; import { useReportDesigner } from "@/contexts/ReportDesignerContext"; import { useState, useRef, useEffect } from "react"; import { useToast } from "@/hooks/use-toast"; import { getFullImageUrl } from "@/lib/api/client"; import JsBarcode from "jsbarcode"; import QRCode from "qrcode"; // mm -> px 변환 상수 const MM_TO_PX = 4; interface ReportPreviewModalProps { isOpen: boolean; onClose: () => void; } // 미리보기용 워터마크 레이어 컴포넌트 interface PreviewWatermarkLayerProps { watermark: { enabled: boolean; type: "text" | "image"; text?: string; fontSize?: number; fontColor?: string; imageUrl?: string; opacity: number; style: "diagonal" | "center" | "tile"; rotation?: number; }; pageWidth: number; pageHeight: number; } function PreviewWatermarkLayer({ watermark, pageWidth, pageHeight }: PreviewWatermarkLayerProps) { const baseStyle: React.CSSProperties = { position: "absolute", top: 0, left: 0, width: "100%", height: "100%", pointerEvents: "none", overflow: "hidden", zIndex: 0, }; const rotation = watermark.rotation ?? -45; // 대각선 스타일 if (watermark.style === "diagonal") { return (
| ${col.header} | `).join("")}
|---|