| |
| |
| |
| |
| |
|
|
| |
|
|
| const PDFExportGuide = { |
| |
| |
| chrome: { |
| destination: "Save as PDF", |
| layout: "Landscape", |
| paperSize: "A4", |
| margins: "None", |
| scale: "Fit to page width", |
| backgroundGraphics: true, |
| headers: false |
| }, |
| |
| |
| firefox: { |
| destination: "Save as PDF", |
| orientation: "Landscape", |
| paperSize: "A4", |
| margins: "None", |
| scale: 100, |
| printBackgrounds: true, |
| shrinkToFit: true |
| }, |
| |
| |
| safari: { |
| PDF: "Save as PDF", |
| orientation: "Landscape", |
| paperSize: "A4", |
| scale: "100%", |
| printBackgrounds: true |
| } |
| }; |
|
|
| |
| const enhancedPrintCSS = ` |
| @media print { |
| /* Force exact dimensions */ |
| html, body { |
| width: 297mm; |
| height: 210mm; |
| margin: 0; |
| padding: 0; |
| overflow: hidden; |
| } |
| |
| /* Hide everything except comic pages */ |
| body > *:not(.comic-container) { |
| display: none !important; |
| } |
| |
| /* Comic container full size */ |
| .comic-container { |
| width: 297mm !important; |
| height: 210mm !important; |
| margin: 0 !important; |
| padding: 0 !important; |
| position: relative !important; |
| } |
| |
| /* Each page exact A4 landscape */ |
| .comic-page { |
| width: 297mm !important; |
| height: 210mm !important; |
| page-break-after: always !important; |
| page-break-inside: avoid !important; |
| position: relative !important; |
| margin: 0 !important; |
| padding: 10mm !important; |
| box-sizing: border-box !important; |
| } |
| |
| /* Grid fills available space */ |
| .comic-grid { |
| width: 100% !important; |
| height: 100% !important; |
| display: grid !important; |
| grid-template-columns: 1fr 1fr !important; |
| grid-template-rows: 1fr 1fr !important; |
| gap: 5mm !important; |
| } |
| |
| /* Panels fill grid cells */ |
| .panel { |
| width: 100% !important; |
| height: 100% !important; |
| position: relative !important; |
| overflow: hidden !important; |
| border: 2px solid black !important; |
| } |
| |
| .panel img { |
| width: 100% !important; |
| height: 100% !important; |
| object-fit: contain !important; |
| } |
| |
| /* Print settings */ |
| @page { |
| size: A4 landscape; |
| margin: 0; |
| } |
| } |
| `; |
|
|
| |
| function preparePDFExport() { |
| |
| const existingPrintStyles = document.querySelector('#pdf-print-styles'); |
| if (existingPrintStyles) { |
| existingPrintStyles.remove(); |
| } |
| |
| |
| const styleEl = document.createElement('style'); |
| styleEl.id = 'pdf-print-styles'; |
| styleEl.innerHTML = enhancedPrintCSS; |
| document.head.appendChild(styleEl); |
| |
| |
| const comicPages = document.querySelectorAll('.comic-page'); |
| comicPages.forEach(page => { |
| page.style.pageBreakAfter = 'always'; |
| page.style.pageBreakInside = 'avoid'; |
| }); |
| |
| |
| const userAgent = navigator.userAgent; |
| let instructions = ''; |
| |
| if (userAgent.includes('Chrome') || userAgent.includes('Edge')) { |
| instructions = 'Chrome/Edge detected. Use these settings:\n' + |
| '• Layout: Landscape\n' + |
| '• Margins: None\n' + |
| '• Scale: Fit to page width'; |
| } else if (userAgent.includes('Firefox')) { |
| instructions = 'Firefox detected. Use these settings:\n' + |
| '• Orientation: Landscape\n' + |
| '• Margins: None\n' + |
| '• Scale: 100%'; |
| } else if (userAgent.includes('Safari')) { |
| instructions = 'Safari detected. Use these settings:\n' + |
| '• Orientation: Landscape\n' + |
| '• Scale: 100%'; |
| } |
| |
| if (instructions) { |
| console.log('📄 PDF Export Settings:\n' + instructions); |
| } |
| } |
|
|
| |
| function exportToPDFEnhanced() { |
| preparePDFExport(); |
| |
| setTimeout(() => { |
| window.print(); |
| }, 100); |
| } |
|
|
| |
| window.exportToPDFEnhanced = exportToPDFEnhanced; |