Los márgenes de impresión eran muy angostos y el contenido de cada etiqueta salía del área imprimible. Se amplían los márgenes del @page, se recalcula la altura útil de página acorde, se recorta el espaciado interno de la etiqueta para que entre en el nuevo espacio disponible, y se reemplaza el "margin-top: auto" (que WeasyPrint no respetaba) por un posicionamiento absoluto para anclar la línea de documento al fondo del recuadro. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
132 lines
2.6 KiB
HTML
132 lines
2.6 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<style>
|
|
@font-face {
|
|
font-family: 'Orbitron';
|
|
src: url('fonts/Orbitron-Bold.ttf') format('truetype');
|
|
font-weight: bold;
|
|
}
|
|
|
|
@page {
|
|
size: {{ paper_size }} landscape;
|
|
margin: 1.6cm 3cm 1cm 2.2cm;
|
|
}
|
|
|
|
body {
|
|
font-family: Arial, Helvetica, sans-serif;
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
|
|
.pagina {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
grid-template-rows: 1fr 1fr;
|
|
gap: 0.15in;
|
|
height: {{ pagina_alto }};
|
|
page-break-after: always;
|
|
}
|
|
|
|
.pagina:last-child {
|
|
page-break-after: auto;
|
|
}
|
|
|
|
.sticker {
|
|
height: 100%;
|
|
border: 2px solid #000;
|
|
padding: 0.15in 0.35in;
|
|
box-sizing: border-box;
|
|
position: relative;
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.titulo {
|
|
color: #E8781E;
|
|
font-family: 'Orbitron', 'Arial Black', Arial, sans-serif;
|
|
font-size: 20pt;
|
|
font-weight: bold;
|
|
letter-spacing: 1px;
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
.campo {
|
|
margin-bottom: 8px;
|
|
}
|
|
|
|
.campo-direccion {
|
|
min-height: 0.5in;
|
|
}
|
|
|
|
.campo-label {
|
|
font-family: Arial, Helvetica, sans-serif;
|
|
font-size: 13pt;
|
|
font-weight: normal;
|
|
}
|
|
|
|
.campo-valor {
|
|
font-family: Arial, Helvetica, sans-serif;
|
|
font-size: 13pt;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.contador {
|
|
font-family: Arial, Helvetica, sans-serif;
|
|
font-size: 38pt;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.documento-linea {
|
|
position: absolute;
|
|
left: 0.35in;
|
|
right: 0.35in;
|
|
bottom: 0.15in;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: flex-end;
|
|
}
|
|
|
|
.documento-linea .campo {
|
|
margin-bottom: 0;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
|
|
{% for pagina in paginas %}
|
|
<div class="pagina">
|
|
{% for sticker in pagina %}
|
|
<div class="sticker">
|
|
<div class="titulo">TAGUMEDICA</div>
|
|
|
|
<div class="campo">
|
|
<div class="campo-label">DATOS DEL CLIENTE:</div>
|
|
<div class="campo-valor">{{ datos.cliente }}</div>
|
|
</div>
|
|
|
|
<div class="campo campo-direccion">
|
|
<div class="campo-label">DIRECCIÓN:</div>
|
|
<div class="campo-valor">{{ datos.direccion }}</div>
|
|
</div>
|
|
|
|
<div class="campo">
|
|
<div class="campo-label">LUGAR:</div>
|
|
<div class="campo-valor">{{ datos.lugar }}</div>
|
|
</div>
|
|
|
|
<div class="documento-linea">
|
|
<div class="campo">
|
|
<div class="campo-label">DOCUMENTO:</div>
|
|
<div class="campo-valor">{{ datos.documento }}</div>
|
|
</div>
|
|
<div class="contador">{{ sticker.numero }}/{{ sticker.total }}</div>
|
|
</div>
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
{% endfor %}
|
|
|
|
</body>
|
|
</html>
|