diff --git a/app/Models/Labels/Sheets/Avery/L4736_A.php b/app/Models/Labels/Sheets/Avery/L4736_A.php index c2af2717b546..de9c14e73747 100644 --- a/app/Models/Labels/Sheets/Avery/L4736_A.php +++ b/app/Models/Labels/Sheets/Avery/L4736_A.php @@ -95,23 +95,39 @@ public function write($pdf, $record) $currentX += $barcodeSize + self::BARCODE_MARGIN; $usableWidth -= $barcodeSize + self::BARCODE_MARGIN; } + $fields = $record->get('fields'); + $fieldCount = count($fields); - foreach ($record->get('fields') as $field) { + $perFieldHeight = (self::LABEL_SIZE + self::LABEL_MARGIN) + + (self::FIELD_SIZE + self::FIELD_MARGIN); + + $baseHeight = $fieldCount * $perFieldHeight; + $scale = 1.0; + if ($baseHeight > $usableHeight && $baseHeight > 0) { + $scale = $usableHeight / $baseHeight; + } + + $labelSize = self::LABEL_SIZE * $scale; + $labelMargin = self::LABEL_MARGIN * $scale; + $fieldSize = self::FIELD_SIZE * $scale; + $fieldMargin = self::FIELD_MARGIN * $scale; + + foreach ($fields as $field) { static::writeText( $pdf, $field['label'], $currentX, $currentY, - 'freesans', '', self::LABEL_SIZE, 'L', - $usableWidth, self::LABEL_SIZE, true, 0 + 'freesans', '', $labelSize, 'L', + $usableWidth, $labelSize, true, 0 ); - $currentY += self::LABEL_SIZE + self::LABEL_MARGIN; + $currentY += $labelSize + $labelMargin; static::writeText( $pdf, $field['value'], $currentX, $currentY, - 'freemono', 'B', self::FIELD_SIZE, 'L', - $usableWidth, self::FIELD_SIZE, true, 0, 0.01 + 'freemono', 'B', $fieldSize, 'L', + $usableWidth, $fieldSize, true, 0, 0.01 ); - $currentY += self::FIELD_SIZE + self::FIELD_MARGIN; + $currentY += $fieldSize + $fieldMargin; } } diff --git a/app/Models/Labels/Sheets/Avery/L6009_A.php b/app/Models/Labels/Sheets/Avery/L6009_A.php index 4fbd0d3e5589..8c0cdc9ee090 100644 --- a/app/Models/Labels/Sheets/Avery/L6009_A.php +++ b/app/Models/Labels/Sheets/Avery/L6009_A.php @@ -59,23 +59,44 @@ public function write($pdf, $record) $currentX += $barcodeSize + self::BARCODE_MARGIN; $usableWidth -= $barcodeSize + self::BARCODE_MARGIN; } + $fields = $record->get('fields'); + // Below rescales the size of the field box to fit, it feels like it could/should be abstracted one class above + // to be usable on other labels but im unsure of how to implement that, since it uses a lot of private + // constants. - foreach ($record->get('fields') as $field) { + // Figure out how tall the label fields wants to be + $fieldCount = count($fields); + $perFieldHeight = (self::LABEL_SIZE + self::LABEL_MARGIN) + + (self::FIELD_SIZE + self::FIELD_MARGIN); + + $baseHeight = $fieldCount * $perFieldHeight; + // If it doesn't fit in the available height, scale everything down + $scale = 1.0; + if ($baseHeight > $usableHeight && $baseHeight > 0) { + $scale = $usableHeight / $baseHeight; + } + + $labelSize = self::LABEL_SIZE * $scale; + $labelMargin = self::LABEL_MARGIN * $scale; + $fieldSize = self::FIELD_SIZE * $scale; + $fieldMargin = self::FIELD_MARGIN * $scale; + + foreach ($fields as $field) { static::writeText( $pdf, $field['label'], $currentX, $currentY, - 'freesans', '', self::LABEL_SIZE, 'L', - $usableWidth, self::LABEL_SIZE, true, 0 + 'freesans', '', $labelSize, 'L', + $usableWidth, $labelSize, true, 0 ); - $currentY += self::LABEL_SIZE + self::LABEL_MARGIN; + $currentY += $labelSize + $labelMargin; static::writeText( $pdf, $field['value'], $currentX, $currentY, - 'freemono', 'B', self::FIELD_SIZE, 'L', - $usableWidth, self::FIELD_SIZE, true, 0, 0.01 + 'freemono', 'B', $fieldSize, 'L', + $usableWidth, $fieldSize, true, 0, 0.01 ); - $currentY += self::FIELD_SIZE + self::FIELD_MARGIN; + $currentY += $fieldSize + $fieldMargin; } } }