doc-compiler-j2-pdf / app /templates /IndexDocument.html.j2
JairoDanielMT's picture
templates actualizados y blindados
0324409
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8" />
<title>脥ndice de Formas 路 {{ job_id }}</title>
<!-- Fuente corporativa (Inter) -->
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap"
rel="stylesheet"
/>
<style>
@page {
size: A4;
margin: 25.4mm; /* 2.54 cm por lado */
}
body {
font-family: "Inter", -apple-system, BlinkMacSystemFont, "Noto Sans",
system-ui, sans-serif;
color: #0f172a;
margin: 0;
font-size: 12px;
line-height: 1.6;
background: #ffffff;
padding: 0 0 8mm 0;
}
.page {
padding: 0;
margin: 0;
}
h1 {
font-size: 22px;
text-transform: uppercase;
letter-spacing: 0.06em;
margin: 0 0 4px 0;
}
h2 {
color: #475569;
font-size: 14px;
margin: 0 0 16px 0;
}
table {
width: 100%;
border-collapse: collapse;
font-size: 11px;
}
thead {
display: table-header-group; /* repite encabezado en cada p谩gina */
}
tbody tr {
page-break-inside: avoid;
}
th,
td {
border: 1px solid #e2e8f0;
padding: 6px 8px;
text-align: left;
vertical-align: top;
}
th {
text-transform: uppercase;
letter-spacing: 0.08em;
font-size: 10px;
background: #f1f5f9;
}
tbody tr:nth-child(odd) {
background: #f8fafc;
}
.muted {
color: #94a3b8;
font-size: 10px;
text-transform: uppercase;
letter-spacing: 0.08em;
margin-top: 24px;
text-align: right;
}
</style>
</head>
<body>
<div class="page">
<h1>脥ndice de Formas</h1>
<h2>
Job {{ job_id }}
{{ entries is defined and entries is iterable and entries|length or 0 }}
documentos
</h2>
{% if entries and entries is iterable %}
<table>
<thead>
<tr>
<th>#</th>
<th>Archivo</th>
<th>T铆tulo</th>
<th>Tipo</th>
<th>Descripci贸n</th>
<th>SuiteScript</th>
</tr>
</thead>
<tbody>
{% for entry in entries %}
{# Si entry es mapping (dict), usamos sus campos. Si no, lo mostramos crudo. #}
{% if entry is mapping %}
<tr>
<td>{{ loop.index }}</td>
<td>{{ entry.path | default("-") }}</td>
<td>{{ entry.title | default("-") }}</td>
<td>{{ entry.script_type | default("-") }}</td>
<td>{{ entry.description | default("Sin descripci贸n") }}</td>
<td>{{ entry.api_version | default("-") }}</td>
</tr>
{% else %}
<tr>
<td>{{ loop.index }}</td>
<td colspan="5">
{{ entry }}
</td>
</tr>
{% endif %}
{% endfor %}
</tbody>
</table>
{% else %}
<p>No se encontraron documentos para este job.</p>
{% endif %}
<p class="muted">Generado autom谩ticamente {{ generated_at }}</p>
</div>
</body>
</html>