fix(pdf): letter page with content constrained strictly to top half (media carta vertical)

This commit is contained in:
=
2026-09-21 19:07:37 -04:00
parent 7791fe9bc3
commit 9263e3486f
4 changed files with 71 additions and 31 deletions
@@ -28,13 +28,14 @@ class InsuranceAuthPdfService {
final pdf = pw.Document(title: 'Autorización de seguro - $patientName'); final pdf = pw.Document(title: 'Autorización de seguro - $patientName');
final formattedDate = DateFormat('dd/MM/yyyy').format(date ?? DateTime.now()); final formattedDate = DateFormat('dd/MM/yyyy').format(date ?? DateTime.now());
// Formato Media Carta Vertical (5.5 x 8.5 pulgadas / 396 x 612 pt): // Formato Carta Vertical (8.5 x 11.0 pulgadas / 612 x 792 pt):
// Margen equilibrado de media pulgada (36 pt) a los lados y 20 pt vertical // Todo el contenido abarca estrictamente la mitad superior de la hoja (5.5 pulgadas / 396 pt),
// dejando la mitad inferior libre para corte o papel pre-cortado.
const pageFormat = PdfPageFormat( const pageFormat = PdfPageFormat(
5.5 * PdfPageFormat.inch,
8.5 * PdfPageFormat.inch, 8.5 * PdfPageFormat.inch,
marginLeft: 36, 11.0 * PdfPageFormat.inch,
marginRight: 36, marginLeft: 54,
marginRight: 54,
marginTop: 20, marginTop: 20,
marginBottom: 20, marginBottom: 20,
); );
@@ -70,6 +71,12 @@ class InsuranceAuthPdfService {
pageFormat: pageFormat, pageFormat: pageFormat,
build: (pw.Context context) { build: (pw.Context context) {
return pw.Column( return pw.Column(
crossAxisAlignment: pw.CrossAxisAlignment.stretch,
children: [
// Mitad superior de la hoja (máximo 5.5 pulgadas / 396 pt)
pw.Container(
height: 5.5 * PdfPageFormat.inch - 36,
child: pw.Column(
crossAxisAlignment: pw.CrossAxisAlignment.stretch, crossAxisAlignment: pw.CrossAxisAlignment.stretch,
children: [ children: [
// 1. Cabecera con Nombre del Doctor y Badge Sutil de Hidalyx Med // 1. Cabecera con Nombre del Doctor y Badge Sutil de Hidalyx Med
@@ -338,6 +345,9 @@ class InsuranceAuthPdfService {
), ),
), ),
], ],
),
),
],
); );
}, },
), ),
@@ -24,13 +24,14 @@ class PrescriptionPdfService {
final pdf = pw.Document(title: 'Receta Médica - $patientName'); final pdf = pw.Document(title: 'Receta Médica - $patientName');
final formattedDate = DateFormat('dd/MM/yyyy').format(date ?? DateTime.now()); final formattedDate = DateFormat('dd/MM/yyyy').format(date ?? DateTime.now());
// Formato Media Carta Vertical (5.5 x 8.5 pulgadas / 396 x 612 pt): // Formato Carta Vertical (8.5 x 11.0 pulgadas / 612 x 792 pt):
// Margen equilibrado de media pulgada (36 pt) a los lados y 20 pt vertical // Todo el contenido abarca estrictamente la mitad superior de la hoja (5.5 pulgadas / 396 pt),
// dejando la mitad inferior libre para corte o papel pre-cortado.
const pageFormat = PdfPageFormat( const pageFormat = PdfPageFormat(
5.5 * PdfPageFormat.inch,
8.5 * PdfPageFormat.inch, 8.5 * PdfPageFormat.inch,
marginLeft: 36, 11.0 * PdfPageFormat.inch,
marginRight: 36, marginLeft: 54,
marginRight: 54,
marginTop: 20, marginTop: 20,
marginBottom: 20, marginBottom: 20,
); );
@@ -67,6 +68,12 @@ class PrescriptionPdfService {
pageFormat: pageFormat, pageFormat: pageFormat,
build: (pw.Context context) { build: (pw.Context context) {
return pw.Column( return pw.Column(
crossAxisAlignment: pw.CrossAxisAlignment.stretch,
children: [
// Mitad superior de la hoja (máximo 5.5 pulgadas / 396 pt)
pw.Container(
height: 5.5 * PdfPageFormat.inch - 36,
child: pw.Column(
crossAxisAlignment: pw.CrossAxisAlignment.stretch, crossAxisAlignment: pw.CrossAxisAlignment.stretch,
children: [ children: [
// 1. Cabecera con Nombre del Doctor y Badge Superior de Hidalyx Med // 1. Cabecera con Nombre del Doctor y Badge Superior de Hidalyx Med
@@ -261,6 +268,9 @@ class PrescriptionPdfService {
), ),
), ),
], ],
),
),
],
); );
}, },
), ),
@@ -23,13 +23,14 @@ class DepartmentReferralPdfService {
final pdf = pw.Document(title: 'Referir a Departamento'); final pdf = pw.Document(title: 'Referir a Departamento');
final formattedDate = DateFormat('dd/MM/yyyy').format(date ?? DateTime.now()); final formattedDate = DateFormat('dd/MM/yyyy').format(date ?? DateTime.now());
// Formato Media Carta Vertical (5.5 x 8.5 pulgadas / 396 x 612 pt): // Formato Carta Vertical (8.5 x 11.0 pulgadas / 612 x 792 pt):
// Margen equilibrado de media pulgada (36 pt) a los lados y 20 pt vertical // Todo el contenido abarca estrictamente la mitad superior de la hoja (5.5 pulgadas / 396 pt),
// dejando la mitad inferior libre para corte o papel pre-cortado.
const pageFormat = PdfPageFormat( const pageFormat = PdfPageFormat(
5.5 * PdfPageFormat.inch,
8.5 * PdfPageFormat.inch, 8.5 * PdfPageFormat.inch,
marginLeft: 36, 11.0 * PdfPageFormat.inch,
marginRight: 36, marginLeft: 54,
marginRight: 54,
marginTop: 20, marginTop: 20,
marginBottom: 20, marginBottom: 20,
); );
@@ -65,6 +66,12 @@ class DepartmentReferralPdfService {
pageFormat: pageFormat, pageFormat: pageFormat,
build: (pw.Context context) { build: (pw.Context context) {
return pw.Column( return pw.Column(
crossAxisAlignment: pw.CrossAxisAlignment.stretch,
children: [
// Mitad superior de la hoja (máximo 5.5 pulgadas / 396 pt)
pw.Container(
height: 5.5 * PdfPageFormat.inch - 36,
child: pw.Column(
crossAxisAlignment: pw.CrossAxisAlignment.stretch, crossAxisAlignment: pw.CrossAxisAlignment.stretch,
children: [ children: [
// 1. Cabecera con Nombre del Doctor y Badge Sutil de Hidalyx Med // 1. Cabecera con Nombre del Doctor y Badge Sutil de Hidalyx Med
@@ -210,6 +217,9 @@ class DepartmentReferralPdfService {
), ),
), ),
], ],
),
),
],
); );
}, },
), ),
@@ -23,13 +23,14 @@ class DoctorReferralPdfService {
final pdf = pw.Document(title: 'Referir a Doctor (a)'); final pdf = pw.Document(title: 'Referir a Doctor (a)');
final formattedDate = DateFormat('dd/MM/yyyy').format(date ?? DateTime.now()); final formattedDate = DateFormat('dd/MM/yyyy').format(date ?? DateTime.now());
// Formato Media Carta Vertical (5.5 x 8.5 pulgadas / 396 x 612 pt): // Formato Carta Vertical (8.5 x 11.0 pulgadas / 612 x 792 pt):
// Margen equilibrado de media pulgada (36 pt) a los lados y 20 pt vertical // Todo el contenido abarca estrictamente la mitad superior de la hoja (5.5 pulgadas / 396 pt),
// dejando la mitad inferior libre para corte o papel pre-cortado.
const pageFormat = PdfPageFormat( const pageFormat = PdfPageFormat(
5.5 * PdfPageFormat.inch,
8.5 * PdfPageFormat.inch, 8.5 * PdfPageFormat.inch,
marginLeft: 36, 11.0 * PdfPageFormat.inch,
marginRight: 36, marginLeft: 54,
marginRight: 54,
marginTop: 20, marginTop: 20,
marginBottom: 20, marginBottom: 20,
); );
@@ -65,6 +66,12 @@ class DoctorReferralPdfService {
pageFormat: pageFormat, pageFormat: pageFormat,
build: (pw.Context context) { build: (pw.Context context) {
return pw.Column( return pw.Column(
crossAxisAlignment: pw.CrossAxisAlignment.stretch,
children: [
// Mitad superior de la hoja (máximo 5.5 pulgadas / 396 pt)
pw.Container(
height: 5.5 * PdfPageFormat.inch - 36,
child: pw.Column(
crossAxisAlignment: pw.CrossAxisAlignment.stretch, crossAxisAlignment: pw.CrossAxisAlignment.stretch,
children: [ children: [
// 1. Cabecera con Nombre del Doctor y Badge Sutil de Hidalyx Med // 1. Cabecera con Nombre del Doctor y Badge Sutil de Hidalyx Med
@@ -210,6 +217,9 @@ class DoctorReferralPdfService {
), ),
), ),
], ],
),
),
],
); );
}, },
), ),