Created
December 28, 2025 17:00
-
-
Save Jcbertorello/9b1d83adaf3b53cff5585d277c60c3ef to your computer and use it in GitHub Desktop.
Dashboard Ajonjolí - 2025-12-28 17:00
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ```html | |
| <!DOCTYPE html> | |
| <html lang="es"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>Resumen de ventas y espectadores julio 2025 - Cinexo</title> | |
| <script src="https://cdn.jsdelivr.net/npm/chart.js"></script> | |
| <style> | |
| :root { | |
| --color-primary: #60B99A; | |
| --color-primary-light: #7FCDB2; | |
| --color-primary-dark: #4A9D80; | |
| --color-secondary: #1F3B4D; | |
| --color-secondary-light: #2D5066; | |
| --color-dark: #1e293b; | |
| --color-dark-soft: #334155; | |
| --color-muted: #64748b; | |
| --color-light: #94a3b8; | |
| --color-bg: #f8fafc; | |
| --color-bg-alt: #f1f5f9; | |
| --color-card: #ffffff; | |
| --color-border: #e2e8f0; | |
| --color-success: #16a34a; | |
| --color-success-bg: #dcfce7; | |
| --color-danger: #dc2626; | |
| --color-danger-bg: #fee2e2; | |
| --color-warning: #FFB74D; | |
| --color-warning-bg: #fff7ed; | |
| --color-boleteria: #60B99A; | |
| --color-candy: #FFB74D; | |
| } | |
| * { margin: 0; padding: 0; box-sizing: border-box; } | |
| body { | |
| font-family: 'Segoe UI', system-ui, -apple-system, sans-serif; | |
| background-color: var(--color-bg); | |
| color: var(--color-dark); | |
| line-height: 1.6; | |
| min-height: 100vh; | |
| } | |
| .dashboard { | |
| max-width: 1200px; | |
| margin: 0 auto; | |
| padding: 32px 24px; | |
| } | |
| .action-buttons { | |
| display: flex; | |
| gap: 12px; | |
| margin-bottom: 24px; | |
| } | |
| .btn { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 8px; | |
| padding: 12px 24px; | |
| border-radius: 12px; | |
| font-weight: 600; | |
| font-size: 0.95rem; | |
| cursor: pointer; | |
| border: none; | |
| transition: all 0.2s ease; | |
| } | |
| .btn-primary { | |
| background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-dark) 100%); | |
| color: white; | |
| box-shadow: 0 4px 12px -2px rgba(96, 185, 154, 0.4); | |
| } | |
| .btn-primary:hover { | |
| transform: translateY(-2px); | |
| box-shadow: 0 6px 16px -2px rgba(96, 185, 154, 0.5); | |
| } | |
| .btn-secondary { | |
| background-color: var(--color-card); | |
| color: var(--color-dark); | |
| border: 1px solid var(--color-border); | |
| } | |
| .btn-secondary:hover { | |
| background-color: var(--color-bg-alt); | |
| border-color: var(--color-primary); | |
| } | |
| .header { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: flex-start; | |
| margin-bottom: 32px; | |
| flex-wrap: wrap; | |
| gap: 20px; | |
| } | |
| .header-left { | |
| display: flex; | |
| align-items: center; | |
| gap: 16px; | |
| } | |
| .logo { | |
| width: 56px; | |
| height: 56px; | |
| background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-dark) 100%); | |
| border-radius: 16px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| color: white; | |
| font-size: 1.5rem; | |
| font-weight: 800; | |
| box-shadow: 0 8px 20px -4px rgba(96, 185, 154, 0.4); | |
| } | |
| .header-title { | |
| font-size: 1.75rem; | |
| font-weight: 800; | |
| color: var(--color-dark); | |
| margin-bottom: 4px; | |
| } | |
| .header-subtitle { | |
| font-size: 0.95rem; | |
| color: var(--color-muted); | |
| } | |
| .header-date { | |
| font-size: 0.85rem; | |
| color: var(--color-light); | |
| text-align: right; | |
| } | |
| .info-bar { | |
| background: var(--color-card); | |
| border: 1px solid var(--color-border); | |
| border-left: 4px solid var(--color-primary); | |
| border-radius: 12px; | |
| padding: 16px 20px; | |
| margin-bottom: 24px; | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| flex-wrap: wrap; | |
| gap: 12px; | |
| } | |
| .info-item { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| font-size: 0.875rem; | |
| color: var(--color-muted); | |
| } | |
| .info-item strong { color: var(--color-dark); } | |
| .card { | |
| background-color: var(--color-card); | |
| border: 1px solid var(--color-border); | |
| border-radius: 20px; | |
| padding: 24px; | |
| margin-bottom: 24px; | |
| box-shadow: 0 4px 20px -4px rgba(30, 41, 59, 0.08); | |
| transition: box-shadow 0.3s ease, transform 0.3s ease; | |
| break-inside: avoid; | |
| page-break-inside: avoid; | |
| } | |
| .card:hover { | |
| box-shadow: 0 8px 30px -4px rgba(30, 41, 59, 0.12); | |
| transform: translateY(-2px); | |
| } | |
| .card-title { | |
| font-size: 1.1rem; | |
| font-weight: 700; | |
| color: var(--color-dark); | |
| margin-bottom: 4px; | |
| } | |
| .card-subtitle { | |
| font-size: 0.85rem; | |
| color: var(--color-muted); | |
| margin-bottom: 20px; | |
| } | |
| .kpi-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); | |
| gap: 20px; | |
| margin-bottom: 32px; | |
| } | |
| .kpi-card { | |
| background-color: var(--color-card); | |
| border: 1px solid var(--color-border); | |
| border-radius: 20px; | |
| padding: 24px; | |
| text-align: center; | |
| box-shadow: 0 4px 20px -4px rgba(30, 41, 59, 0.08); | |
| transition: all 0.3s ease; | |
| break-inside: avoid; | |
| page-break-inside: avoid; | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .kpi-card::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| height: 4px; | |
| background: linear-gradient(90deg, var(--color-primary), var(--color-primary-light)); | |
| } | |
| .kpi-card.candy::before { | |
| background: linear-gradient(90deg, var(--color-candy), #FFA726); | |
| } | |
| .kpi-card.total::before { | |
| background: linear-gradient(90deg, var(--color-secondary), var(--color-secondary-light)); | |
| } | |
| .kpi-card:hover { | |
| transform: translateY(-4px); | |
| box-shadow: 0 12px 30px -4px rgba(30, 41, 59, 0.15); | |
| } | |
| .kpi-icon { font-size: 2rem; margin-bottom: 12px; } | |
| .kpi-label { | |
| font-size: 0.7rem; | |
| font-weight: 700; | |
| text-transform: uppercase; | |
| letter-spacing: 0.12em; | |
| color: var(--color-muted); | |
| margin-bottom: 12px; | |
| } | |
| .kpi-value { | |
| font-size: 2rem; | |
| font-weight: 800; | |
| color: var(--color-dark); | |
| line-height: 1.1; | |
| margin-bottom: 8px; | |
| } | |
| .kpi-detail { | |
| font-size: 0.85rem; | |
| color: var(--color-muted); | |
| } | |
| .grid-2 { | |
| display: grid; | |
| grid-template-columns: repeat(2, 1fr); | |
| gap: 24px; | |
| margin-bottom: 24px; | |
| } | |
| .chart-container { | |
| height: 350px; | |
| position: relative; | |
| } | |
| .table-wrapper { overflow-x: auto; } | |
| .data-table { | |
| width: 100%; | |
| border-collapse: collapse; | |
| font-size: 0.9rem; | |
| } | |
| .data-table thead { background-color: var(--color-bg-alt); } | |
| .data-table th { | |
| padding: 14px 16px; | |
| text-align: left; | |
| font-weight: 700; | |
| color: var(--color-muted); | |
| text-transform: uppercase; | |
| font-size: 0.7rem; | |
| letter-spacing: 0.08em; | |
| border-bottom: 2px solid var(--color-border); | |
| } | |
| .data-table th.text-right { text-align: right; } | |
| .data-table td { | |
| padding: 14px 16px; | |
| border-bottom: 1px solid var(--color-border); | |
| color: var(--color-dark); | |
| vertical-align: middle; | |
| } | |
| .data-table td.text-right { text-align: right; } | |
| .data-table td.font-bold { font-weight: 700; } | |
| .data-table tr:hover { background-color: var(--color-bg); } | |
| .data-table tr:last-child td { border-bottom: none; } | |
| .rank-badge { | |
| width: 32px; | |
| height: 32px; | |
| border-radius: 10px; | |
| display: inline-flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-weight: 800; | |
| font-size: 0.85rem; | |
| } | |
| .rank-1 { background: linear-gradient(135deg, #FFD700, #FFA500); color: white; } | |
| .rank-2 { background: linear-gradient(135deg, #C0C0C0, #A0A0A0); color: white; } | |
| .rank-3 { background: linear-gradient(135deg, #CD7F32, #B8860B); color: white; } | |
| .rank-default { background-color: var(--color-bg-alt); color: var(--color-muted); } | |
| .badge-container { display: flex; gap: 4px; flex-wrap: wrap; } | |
| .badge { | |
| display: inline-flex; | |
| align-items: center; | |
| padding: 4px 10px; | |
| border-radius: 20px; | |
| font-size: 0.7rem; | |
| font-weight: 700; | |
| text-transform: uppercase; | |
| } | |
| .badge-2d { background: #e0f2fe; color: #0369a1; } | |
| .badge-3d { background: #fef3c7; color: #b45309; } | |
| .badge-imax { background: #fce7f3; color: #be185d; } | |
| .badge-4dx { background: #f3e8ff; color: #7c3aed; } | |
| .badge-combo { background: var(--color-warning-bg); color: #b45309; } | |
| .badge-producto { background: var(--color-success-bg); color: var(--color-success); } | |
| .footer { | |
| text-align: center; | |
| padding: 32px 24px; | |
| margin-top: 32px; | |
| border-top: 1px solid var(--color-border); | |
| } | |
| .footer-content { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 12px; | |
| color: var(--color-light); | |
| font-size: 0.9rem; | |
| } | |
| .footer-logo { | |
| width: 32px; | |
| height: 32px; | |
| background: linear-gradient(135deg, var(--color-primary), var(--color-primary-dark)); | |
| border-radius: 8px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| color: white; | |
| font-size: 0.9rem; | |
| font-weight: 800; | |
| } | |
| .footer-text { text-align: left; } | |
| .footer-text small { display: block; font-size: 0.75rem; color: var(--color-light); } | |
| @media (max-width: 900px) { | |
| .grid-2, .grid-3 { grid-template-columns: 1fr; } | |
| .kpi-grid { grid-template-columns: repeat(2, 1fr); } | |
| .header { flex-direction: column; } | |
| .header-date { text-align: left; } | |
| } | |
| @media (max-width: 500px) { | |
| .kpi-grid { grid-template-columns: 1fr; } | |
| .dashboard { padding: 20px 16px; } | |
| .info-bar { flex-direction: column; align-items: flex-start; } | |
| } | |
| @media print { | |
| body { | |
| background-color: white !important; | |
| -webkit-print-color-adjust: exact !important; | |
| print-color-adjust: exact !important; | |
| } | |
| .action-buttons { display: none !important; } | |
| .card, .kpi-card { | |
| break-inside: avoid !important; | |
| page-break-inside: avoid !important; | |
| box-shadow: none !important; | |
| border: 1px solid #e0e0e0 !important; | |
| } | |
| .card:hover, .kpi-card:hover { transform: none !important; } | |
| .dashboard { padding: 16px !important; max-width: 100% !important; } | |
| .kpi-card::before { background: var(--color-primary) !important; } | |
| .kpi-card.candy::before { background: var(--color-candy) !important; } | |
| .logo, .footer-logo { background: var(--color-primary) !important; } | |
| } | |
| </style> | |
| </head> | |
| <body> | |
| <div class="dashboard"> | |
| <div class="action-buttons"> | |
| <button class="btn btn-primary" onclick="downloadPDF()">📥 Descargar PDF</button> | |
| <button class="btn btn-secondary" onclick="window.print()">🖨️ Imprimir</button> | |
| </div> | |
| <div class="header"> | |
| <div class="header-left"> | |
| <div class="logo">C</div> | |
| <div> | |
| <h1 class="header-title">Resumen de ventas y espectadores julio 2025</h1> | |
| <p class="header-subtitle">Cinexo • Julio 2025</p> | |
| </div> | |
| </div> | |
| <div class="header-date" id="generation-date"></div> | |
| </div> | |
| <div class="info-bar"> | |
| <div class="info-item">📅 <strong>Período:</strong> 01/07/2025 al 31/07/2025</div> | |
| <div class="info-item">📊 <strong>Tipo:</strong> Resumen de Ventas</div> | |
| </div> | |
| <div class="kpi-grid"> | |
| <div class="kpi-card"> | |
| <div class="kpi-icon">🎬</div> | |
| <div class="kpi-label">Espectadores</div> | |
| <div class="kpi-value">33.303</div> | |
| <div class="kpi-detail">Julio 2025</div> | |
| </div> | |
| <div class="kpi-card"> | |
| <div class="kpi-icon">🎫</div> | |
| <div class="kpi-label">Recaudación Boletería</div> | |
| <div class="kpi-value">$91.3M</div> | |
| <div class="kpi-detail">Ticket promedio: $2.741</div> | |
| </div> | |
| <div class="kpi-card candy"> | |
| <div class="kpi-icon">🍿</div> | |
| <div class="kpi-label">Venta Candy</div> | |
| <div class="kpi-value">$207.6M</div> | |
| <div class="kpi-detail">CPP: $6.234</div> | |
| </div> | |
| <div class="kpi-card total"> | |
| <div class="kpi-icon">💰</div> | |
| <div class="kpi-label">Ingresos Totales</div> | |
| <div class="kpi-value">$298.9M</div> | |
| <div class="kpi-detail">Boletería + Candy</div> | |
| </div> | |
| </div> | |
| <div class="grid-2"> | |
| <div class="card"> | |
| <div class="card-title">🏆 Top 5 Películas por Recaudación</div> | |
| <div class="card-subtitle">Ingresos generados por las películas más vistas</div> | |
| <div class="chart-container"> | |
| <canvas id="chartPeliculas"></canvas> | |
| </div> | |
| </div> | |
| <div class="card"> | |
| <div class="card-title">🍭 Top 5 Productos de Candy por Cantidad</div> | |
| <div class="card-subtitle">Unidades vendidas de los productos más populares</div> | |
| <div class="chart-container"> | |
| <canvas id="chartProductosCandy"></canvas> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="card"> | |
| <div class="card-title">🎬 Ranking de Películas</div> | |
| <div class="card-subtitle">Top 5 por espectadores e ingresos en Julio 2025</div> | |
| <div class="table-wrapper"> | |
| <table class="data-table"> | |
| <thead> | |
| <tr> | |
| <th>#</th> | |
| <th>Película</th> | |
| <th>Formato</th> | |
| <th class="text-right">Espectadores</th> | |
| <th class="text-right">Recaudación</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td><span class="rank-badge rank-1">1</span></td> | |
| <td class="font-bold">F1 2D+4D</td> | |
| <td><div class="badge-container"><span class="badge badge-2d">2D</span><span class="badge badge-4dx">4D</span></div></td> | |
| <td class="text-right">5.374</td> | |
| <td class="text-right font-bold">$28.864.000</td> | |
| </tr> | |
| <tr> | |
| <td><span class="rank-badge rank-2">2</span></td> | |
| <td class="font-bold">Jurassic World: Renace 3D+4D</td> | |
| <td><div class="badge-container"><span class="badge badge-3d">3D</span><span class="badge badge-4dx">4D</span></div></td> | |
| <td class="text-right">3.930</td> | |
| <td class="text-right font-bold">$22.260.000</td> | |
| </tr> | |
| <tr> | |
| <td><span class="rank-badge rank-3">3</span></td> | |
| <td class="font-bold">Jurassic World: Renace 2D+4D</td> | |
| <td><div class="badge-container"><span class="badge badge-2d">2D</span><span class="badge badge-4dx">4D</span></div></td> | |
| <td class="text-right">3.087</td> | |
| <td class="text-right font-bold">$16.417.000</td> | |
| </tr> | |
| <tr> | |
| <td><span class="rank-badge rank-default">4</span></td> | |
| <td class="font-bold">Cómo entrenar a tu dragón 3D+4D</td> | |
| <td><div class="badge-container"><span class="badge badge-3d">3D</span><span class="badge badge-4dx">4D</span></div></td> | |
| <td class="text-right">2.728</td> | |
| <td class="text-right font-bold">$15.604.250</td> | |
| </tr> | |
| <tr> | |
| <td><span class="rank-badge rank-default">5</span></td> | |
| <td class="font-bold">Lilo y Stitch 3D</td> | |
| <td><div class="badge-container"><span class="badge badge-3d">3D</span></div></td> | |
| <td class="text-right">1.596</td> | |
| <td class="text-right font-bold">$8.152.750</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| </div> | |
| <div class="card"> | |
| <div class="card-title">🍿 Productos Más Vendidos</div> | |
| <div class="card-subtitle">Confitería - Top 5 por cantidad en Julio 2025</div> | |
| <div class="table-wrapper"> | |
| <table class="data-table"> | |
| <thead> | |
| <tr> | |
| <th>#</th> | |
| <th>Producto</th> | |
| <th>Tipo</th> | |
| <th class="text-right">Cantidad</th> | |
| <th class="text-right">Total</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td><span class="rank-badge rank-1">1</span></td> | |
| <td class="font-bold">COMBO PAREJA</td> | |
| <td><span class="badge badge-combo">Combo</span></td> | |
| <td class="text-right">3.903</td> | |
| <td class="text-right font-bold">$53.998.000</td> | |
| </tr> | |
| <tr> | |
| <td><span class="rank-badge rank-2">2</span></td> | |
| <td class="font-bold">COMBO MEDIANO</td> | |
| <td><span class="badge badge-combo">Combo</span></td> | |
| <td class="text-right">2.823</td> | |
| <td class="text-right font-bold">$26.818.500</td> | |
| </tr> | |
| <tr> | |
| <td><span class="rank-badge rank-3">3</span></td> | |
| <td class="font-bold">COMBO FAMILIA</td> | |
| <td><span class="badge badge-combo">Combo</span></td> | |
| <td class="text-right">2.459</td> | |
| <td class="text-right font-bold">$33.352.500</td> | |
| </tr> | |
| <tr> | |
| <td><span class="rank-badge rank-default">4</span></td> | |
| <td class="font-bold">AGUA</td> | |
| <td><span class="badge badge-producto">Producto</span></td> | |
| <td class="text-right">1.893</td> | |
| <td class="text-right font-bold">$6.625.500</td> | |
| </tr> | |
| <tr> | |
| <td><span class="rank-badge rank-default">5</span></td> | |
| <td class="font-bold">COMBO BALDE</td> | |
| <td><span class="badge badge-combo">Combo</span></td> | |
| <td class="text-right">1.667</td> | |
| <td class="text-right font-bold">$21.671.000</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| </div> | |
| <div class="footer"> | |
| <div class="footer-content"> | |
| <div class="footer-logo">M</div> | |
| <div class="footer-text"> | |
| <strong>Powered by MostachIA</strong> | |
| <small>Procesos inteligentes, resultados superiores</small> | |
| </div> | |
| <span>•</span> | |
| <span id="footer-date"></span> | |
| </div> | |
| </div> | |
| </div> | |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.10.1/html2pdf.bundle.min.js"></script> | |
| <script> | |
| document.addEventListener('DOMContentLoaded', function() { | |
| Chart.defaults.font.family = "'Segoe UI', system-ui, sans-serif"; | |
| Chart.defaults.font.size = 12; | |
| Chart.defaults.color = '#64748b'; | |
| Chart.defaults.plugins.legend.labels.usePointStyle = true; | |
| Chart.defaults.plugins.legend.labels.padding = 20; | |
| Chart.defaults.plugins.legend.position = 'bottom'; | |
| const chartColors = { | |
| primary: '#60B99A', | |
| candy: '#FFB74D', | |
| palette: ['#60B99A', '#1F3B4D', '#7FCDB2', '#2D5066', '#4A9D80', '#FFB74D', '#5A7A8A', '#A8D5C2'] | |
| }; | |
| function formatCurrency(value) { | |
| if (value >= 1000000) return '$' + (value / 1000000).toFixed(1).replace('.',',') + 'M'; | |
| if (value >= 1000) return '$' + (value / 1000).toFixed(0) + 'K'; | |
| return '$' + value.toLocaleString('es-AR', { maximumFractionDigits: 0 }); | |
| } | |
| const today = new Date(); | |
| const formattedDate = `Generado: ${today.toLocaleDateString('es-AR')} ${today.toLocaleTimeString('es-AR', {hour: '2-digit', minute:'2-digit'})}`; | |
| document.getElementById('generation-date').textContent = formattedDate; | |
| document.getElementById('footer-date').textContent = today.toLocaleDateString('es-AR'); | |
| new Chart(document.getElementById('chartPeliculas'), { | |
| type: 'bar', | |
| data: { | |
| labels: ['F1', 'Jurassic World 3D', 'Jurassic World 2D', 'Cómo entrenar...', 'Lilo y Stitch'], | |
| datasets: [{ | |
| label: 'Recaudación', | |
| data: [28864000, 22260000, 16417000, 15604250, 8152750], | |
| backgroundColor: chartColors.palette, | |
| borderRadius: 8, | |
| borderSkipped: false, | |
| }] | |
| }, | |
| options: { | |
| indexAxis: 'y', | |
| responsive: true, | |
| maintainAspectRatio: false, | |
| plugins: { | |
| legend: { display: false }, | |
| tooltip: { callbacks: { label: ctx => formatCurrency(ctx.raw) } } | |
| }, | |
| scales: { | |
| x: { beginAtZero: true, grid: { color: '#f1f5f9' }, ticks: { callback: value => formatCurrency(value) } }, | |
| y: { grid: { display: false } } | |
| } | |
| } | |
| }); | |
| new Chart(document.getElementById('chartProductosCandy'), { | |
| type: 'bar', | |
| data: { | |
| labels: ['Combo Pareja', 'Combo Mediano', 'Combo Familia', 'Agua', 'Combo Balde'], | |
| datasets: [{ | |
| label: 'Unidades Vendidas', | |
| data: [3903, 2823, 2459, 1893, 1667], | |
| backgroundColor: chartColors.candy, | |
| borderRadius: 8, | |
| }] | |
| }, | |
| options: { | |
| responsive: true, | |
| maintainAspectRatio: false, | |
| plugins: { legend: { display: false } }, | |
| scales: { | |
| y: { beginAtZero: true, grid: { color: '#f1f5f9' } }, | |
| x: { grid: { display: false } } | |
| } | |
| } | |
| }); | |
| }); | |
| function downloadPDF() { | |
| const buttons = document.querySelector('.action-buttons'); | |
| buttons.style.display = 'none'; | |
| const element = document.querySelector('.dashboard'); | |
| const title = document.querySelector('.header-title')?.textContent || 'Dashboard'; | |
| const date = new Date().toISOString().split('T')[0]; | |
| const filename = 'cinexo-' + title.toLowerCase() | |
| .normalize('NFD').replace(/[\u0300-\u036f]/g, '') | |
| .replace(/[^a-z0-9]+/g, '-') | |
| .replace(/-+/g, '-') | |
| .replace(/^-|-$/g, '') + '-' + date + '.pdf'; | |
| const opt = { | |
| margin: [8, 8, 8, 8], | |
| filename: filename, | |
| image: { type: 'jpeg', quality: 0.95 }, | |
| html2canvas: { | |
| scale: 2, useCORS: true, logging: false, | |
| backgroundColor: '#ffffff', windowWidth: 1200 | |
| }, | |
| jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrait' }, | |
| pagebreak: { mode: ['avoid-all', 'css', 'legacy'], avoid: '.card, .kpi-card' } | |
| }; | |
| html2pdf().set(opt).from(element).save().then(() => { | |
| buttons.style.display = 'flex'; | |
| }).catch(() => { | |
| buttons.style.display = 'flex'; | |
| alert('Error al generar PDF. Intentá con Imprimir.'); | |
| }); | |
| } | |
| </script> | |
| </body> | |
| </html> | |
| ``` |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment