-my $upperRightX = $page_width;
-my $upperRightY = $page_height;
-
-prInitVars();
-$| = 1;
-prFile();
-
-prMbox( $lowerLeftX, $lowerLeftY, $upperRightX, $upperRightY );
-
-# later feature, change the font-type and size?
-prFont('C'); # Just setting a font
-prFontSize($fontsize);
-
-my $margin = $top_margin;
-my $left_text_margin = 3;
-my $str;
-
-#warn "STARTROW = $startrow\n";
-
-#my $page_break_count = $startrow;
-my $codetype; # = 'Code39';
-
-#do page border
-# drawbox( $lowerLeftX, $lowerLeftY, $upperRightX, $upperRightY );
-
-# draw margin box for alignment page
-drawbox( ($left_margin), ($top_margin), ($page_width-(2*$left_margin)), ($page_height-(2*$top_margin)) ) if $DEBUG_LPT;
-
-# Adjustments for image position and creep -fbcit
-# NOTE: *All* of these factor in to image position and creep. Keep this in mind when makeing adjustments.
-# Suggested proceedure: Adjust margins until both top and left margins are correct. Then adjust the label
-# height and width to correct label creep across and down page. Units are PostScript Points (72 per inch).
-
-warn "Active profile: $profile->{'prof_id'}" if $DEBUG;
-
-if ( $DEBUG ) {
-warn "-------------------------INITIAL VALUES-----------------------------";
-warn "top margin = $top_margin points\n";
-warn "left margin = $left_margin points\n";
-warn "label height = $label_height points\n";
-warn "label width = $label_width points\n";
-}
-
-$top_margin = $top_margin + $profile->{'offset_vert'}; # controls vertical offset
-$label_height = $label_height + $profile->{'creep_vert'}; # controls vertical creep
-$left_margin = $left_margin + $profile->{'offset_horz'}; # controls horizontal offset
-$label_width = $label_width + $profile->{'creep_horz'}; # controls horizontal creep
-
-if ( $DEBUG ) {
-warn "-------------------------ADJUSTED VALUES-----------------------------";
-warn "top margin = $top_margin points\n";
-warn "left margin = $left_margin points\n";
-warn "label height = $label_height points\n";
-warn "label width = $label_width points\n";
-}
-
-my $item;
-my ( $i, $i2 ); # loop counters
-
-# big row loop
-
-#warn " $lowerLeftX, $lowerLeftY, $upperRightX, $upperRightY";
-#warn "$label_rows, $label_cols\n";
-#warn "$label_height, $label_width\n";
-#warn "$page_height, $page_width\n";
-
-my ( $rowcount, $colcount, $x_pos, $y_pos, $rowtemp, $coltemp );
-
-if ( $start_label eq 1 ) {
- $rowcount = 1;
- $colcount = 1;
- $x_pos = $left_margin;
- $y_pos = ( $page_height - $top_margin - $label_height );
-}
-
-else {
-
- #eval {
- $rowcount = ceil( $start_label / $label_cols );
-
- #} ;
- #$rowcount = 1 if $@;
-
- $colcount = ( $start_label - ( ( $rowcount - 1 ) * $label_cols ) );
-
- $x_pos = $left_margin + ( $label_width * ( $colcount - 1 ) ) +
- ( $colspace * ( $colcount - 1 ) );
-
- $y_pos = $page_height - $top_margin - ( $label_height * $rowcount ) -
- ( $rowspace * ( $rowcount - 1 ) );
-
- warn "Start label specified: $start_label Beginning in row $rowcount, column $colcount" if $DEBUG;
- warn "X position = $x_pos Y position = $y_pos" if $DEBUG;
- warn "Rowspace = $rowspace Label height = $label_height" if $DEBUG;
-}
-
-#warn "ROW COL $rowcount, $colcount";
-
-#my $barcodetype; # = 'Code39';
-
-#
-# main foreach loop
-#
-
-foreach $item (@resultsloop) {
- warn "Label parameters: xpos=$x_pos, ypos=$y_pos, lblwid=$label_width, lblhig=$label_height" if $DEBUG;
- my $barcode = $item->{'barcode'};
- if ( $printingtype eq 'BAR' ) {
- drawbox( $x_pos, $y_pos, $label_width, $label_height ) if $guidebox;
- DrawBarcode( $x_pos, $y_pos, $label_height, $label_width, $barcode,
- $barcodetype );
- CalcNextLabelPos();
- }
- elsif ( $printingtype eq 'BARBIB' ) {
- drawbox( $x_pos, $y_pos, $label_width, $label_height ) if $guidebox;
-
- # reposoitioning barcode up the top of label
- my $barcode_height = ($label_height / 1.5 ); ## scaling voodoo
- my $text_height = $label_height / 2;
- my $barcode_y = $y_pos + ( $label_height / 2.5 ); ## scaling voodoo
-
- DrawBarcode( $x_pos, $barcode_y, $barcode_height, $label_width,
- $barcode, $barcodetype );
- DrawSpineText( $y_pos, $text_height, $fontsize, $x_pos,
- $left_text_margin, $text_wrap_cols, \$item, \$conf_data );
-
- CalcNextLabelPos();
-
- } # correct
- elsif ( $printingtype eq 'BIBBAR' ) {
- drawbox( $x_pos, $y_pos, $label_width, $label_height ) if $guidebox;
- my $barcode_height = $label_height / 2;
- DrawBarcode( $x_pos, $y_pos, $barcode_height, $label_width, $barcode,
- $barcodetype );
- DrawSpineText( $y_pos, $label_height, $fontsize, $x_pos,
- $left_text_margin, $text_wrap_cols, \$item, \$conf_data );
-
- CalcNextLabelPos();
- }
-
- elsif ( $printingtype eq 'ALT' ) {
- drawbox( $x_pos, $y_pos, $label_width, $label_height ) if $guidebox;
- DrawBarcode( $x_pos, $y_pos, $label_height, $label_width, $barcode,
- $barcodetype );
- CalcNextLabelPos();
- drawbox( $x_pos, $y_pos, $label_width, $label_height ) if $guidebox;
- DrawSpineText( $y_pos, $label_height, $fontsize, $x_pos,
- $left_text_margin, $text_wrap_cols, \$item, \$conf_data );
-
- CalcNextLabelPos();
- }
-
-
- elsif ( $printingtype eq 'BIB' ) {
- drawbox( $x_pos, $y_pos, $label_width, $label_height ) if $guidebox;
- DrawSpineText( $y_pos, $label_height, $fontsize, $x_pos,
- $left_text_margin, $text_wrap_cols, \$item, \$conf_data );
- CalcNextLabelPos();
+my $upperRightX = $template->get_attr('page_width');
+my $upperRightY = $template->get_attr('page_height');
+
+$pdf->Compress(1);
+$pdf->Mbox($lowerLeftX, $lowerLeftY, $upperRightX, $upperRightY);
+
+my ($row_count, $col_count, $llx, $lly) = $template->get_label_position($start_label);
+LABEL_ITEMS:
+foreach my $item (@{$batch->get_attr('items')}) {
+ my ($barcode_llx, $barcode_lly, $barcode_width, $barcode_y_scale_factor) = 0,0,0,0;
+ my $label = C4::Labels::Label->new(
+ batch_id => $batch_id,
+ item_number => $item->{'item_number'},
+ width => $template->get_attr('label_width'),
+ height => $template->get_attr('label_height'),
+ top_text_margin => $template->get_attr('top_text_margin'),
+ left_text_margin => $template->get_attr('left_text_margin'),
+ barcode_type => $layout->get_attr('barcode_type'),
+ printing_type => $layout->get_attr('printing_type'),
+ guidebox => $layout->get_attr('guidebox'),
+ font => $layout->get_attr('font'),
+ font_size => $layout->get_attr('font_size'),
+ callnum_split => $layout->get_attr('callnum_split'),
+ justify => $layout->get_attr('text_justify'),
+ format_string => $layout->get_attr('format_string'),
+ text_wrap_cols => $layout->get_text_wrap_cols(label_width => $template->get_attr('label_width'), left_text_margin => $template->get_attr('left_text_margin')),
+ );
+ my $label_type = $label->get_label_type;
+ if ($label_type eq 'BIB') {
+ my $line_spacer = ($label->get_attr('font_size') * 1); # number of pixels between text rows (This is actually leading: baseline to baseline minus font size. Recommended starting point is 20% of font size.).
+ my $text_lly = ($lly + ($template->get_attr('label_height') - $template->get_attr('top_text_margin')));
+ my $label_text = $label->draw_label_text(
+ llx => $llx,
+ lly => $text_lly,
+ line_spacer => $line_spacer,
+ );
+ _print_text($label_text);
+ ($row_count, $col_count, $llx, $lly) = _calc_next_label_pos($row_count, $col_count, $llx, $lly);
+ next LABEL_ITEMS;