getLabelPrintableArea(); $currentX = $pa->x1; $currentY = $pa->y1; $usableWidth = $pa->w; $usableHeight = $pa->h; if ($record->has('title')) { static::writeText( $pdf, $record->get('title'), $pa->x1, $pa->y1, 'freesans', '', self::TITLE_SIZE, 'C', $pa->w, self::TITLE_SIZE, true, 0 ); } $currentY += self::TITLE_SIZE + self::TITLE_MARGIN; $usableHeight -= self::TITLE_SIZE + self::TITLE_MARGIN; $barcodeSize = $usableHeight; if ($record->has('barcode2d')) { static::write2DBarcode( $pdf, $record->get('barcode2d')->content, $record->get('barcode2d')->type, $currentX, $currentY, $barcodeSize, $barcodeSize ); $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. // 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', '', $labelSize, 'L', $usableWidth, $labelSize, true, 0 ); $currentY += $labelSize + $labelMargin; static::writeText( $pdf, $field['value'], $currentX, $currentY, 'freemono', 'B', $fieldSize, 'L', $usableWidth, $fieldSize, true, 0, 0.01 ); $currentY += $fieldSize + $fieldMargin; } } } ?>