import { For, Show } from 'solid-js'; import type { DeckStore } from './hooks/deckStore'; import { usePageLayout } from './hooks/usePageLayout'; import { usePDFExport, type ExportOptions } from './hooks/usePDFExport'; import { usePlotterExport } from './hooks/usePlotterExport'; import { getShapeSvgClipPath } from './hooks/shape-styles'; import { PrintPreviewHeader } from './PrintPreviewHeader'; import { PrintPreviewFooter } from './PrintPreviewFooter'; import { CardLayer } from './CardLayer'; export interface PrintPreviewProps { store: DeckStore; onClose: () => void; onExport: () => void; } /** * 打印预览组件:在 A4 纸张上排列所有卡牌 */ export function PrintPreview(props: PrintPreviewProps) { const { store } = props; const { getA4Size, pages, cropMarks } = usePageLayout(store); const { exportToPDF } = usePDFExport(store, props.onClose); const { exportToPlt } = usePlotterExport(store); const frontVisibleLayers = () => store.state.frontLayerConfigs.filter((l) => l.visible); const backVisibleLayers = () => store.state.backLayerConfigs.filter((l) => l.visible); const handleExport = async () => { const options: ExportOptions = { orientation: store.state.printOrientation, cardWidth: store.state.dimensions?.cardWidth || 56, cardHeight: store.state.dimensions?.cardHeight || 88, gridOriginX: store.state.dimensions?.gridOriginX || 0, gridOriginY: store.state.dimensions?.gridOriginY || 0, gridAreaWidth: store.state.dimensions?.gridAreaWidth || 56, gridAreaHeight: store.state.dimensions?.gridAreaHeight || 88, visibleLayers: frontVisibleLayers(), dimensions: store.state.dimensions! }; await exportToPDF(pages(), cropMarks(), options); }; const handleExportPlt = () => { exportToPlt(pages()); }; return (