View | Details | Raw Unified | Return to bug 18550
Collapse All | Expand All

(-)a/C4/Patroncards/Patroncard.pm (-15 / +42 lines)
Lines 166-171 sub draw_text { Link Here
166
    warn sprintf('No pdf object passed in.') and return -1 if !$pdf;
166
    warn sprintf('No pdf object passed in.') and return -1 if !$pdf;
167
    my @card_text = ();
167
    my @card_text = ();
168
    return unless (ref($self->{'layout'}->{'text'}) eq 'ARRAY'); # just in case there is not text
168
    return unless (ref($self->{'layout'}->{'text'}) eq 'ARRAY'); # just in case there is not text
169
170
    my $units = get_unit_values();
171
    my $unitvalue = 1;
172
    foreach my $un (@$units){
173
        if ($un->{'type'} eq $self->{'layout'}->{'units'}) {
174
            $unitvalue = $un->{'value'};
175
        }
176
    }
177
178
169
    my $text = [@{$self->{'layout'}->{'text'}}]; # make a copy of the arrayref *not* simply a pointer
179
    my $text = [@{$self->{'layout'}->{'text'}}]; # make a copy of the arrayref *not* simply a pointer
170
    while (scalar @$text) {
180
    while (scalar @$text) {
171
        my $line = shift @$text;
181
        my $line = shift @$text;
Lines 187-194 sub draw_text { Link Here
187
            $line = join(' ',@orig_line);
197
            $line = join(' ',@orig_line);
188
        }
198
        }
189
        my $text_attribs = shift @$text;
199
        my $text_attribs = shift @$text;
190
        my $origin_llx = $self->{'llx'} + $text_attribs->{'llx'};
200
        my $origin_llx = $self->{'llx'} + $text_attribs->{'llx'} * $unitvalue;
191
        my $origin_lly = $self->{'lly'} + $text_attribs->{'lly'};
201
        my $origin_lly = $self->{'lly'} + $text_attribs->{'lly'} * $unitvalue;
192
        my $Tx = 0;     # final text llx
202
        my $Tx = 0;     # final text llx
193
        my $Ty = $origin_lly;   # final text lly
203
        my $Ty = $origin_lly;   # final text lly
194
        my $Tw = 0;     # final text word spacing. See http://www.adobe.com/devnet/pdf/pdf_reference.html ISO 32000-1
204
        my $Tw = 0;     # final text word spacing. See http://www.adobe.com/devnet/pdf/pdf_reference.html ISO 32000-1
Lines 226-233 sub draw_text { Link Here
226
                    $string_width = C4::Creators::PDF->StrWidth($line, $text_attribs->{'font'}, $text_attribs->{'font_size'});
236
                    $string_width = C4::Creators::PDF->StrWidth($line, $text_attribs->{'font'}, $text_attribs->{'font_size'});
227
                    #$font_units_width = $m->string_width($line);
237
                    #$font_units_width = $m->string_width($line);
228
                    #$string_width = ($font_units_width * $text_attribs->{'font_size'}) / $units_per_em;
238
                    #$string_width = ($font_units_width * $text_attribs->{'font_size'}) / $units_per_em;
229
                    if (($string_width + $text_attribs->{'llx'}) < $self->{'width'}) {
239
                    if ( $string_width + ( $text_attribs->{'llx'} * $unitvalue ) < $self->{'width'}) {
230
                        ($Tx, $Tw) = text_alignment($origin_llx, $self->{'width'}, $text_attribs->{'llx'}, $string_width, $line, $text_attribs->{'text_alignment'});
240
                        ($Tx, $Tw) = text_alignment($origin_llx, $self->{'width'}, $text_attribs->{'llx'} * $unitvalue, $string_width, $line, $text_attribs->{'text_alignment'});
231
                        $line =~ s/^\s+//g;     # strip naughty leading spaces
241
                        $line =~ s/^\s+//g;     # strip naughty leading spaces
232
                        push @lines, {line=> $line, Tx => $Tx, Ty => $Ty, Tw => $Tw};
242
                        push @lines, {line=> $line, Tx => $Tx, Ty => $Ty, Tw => $Tw};
233
                        last WRAP_LINES;
243
                        last WRAP_LINES;
Lines 236-242 sub draw_text { Link Here
236
            }
246
            }
237
        }
247
        }
238
        else {
248
        else {
239
            ($Tx, $Tw) = text_alignment($origin_llx, $self->{'width'}, $text_attribs->{'llx'}, $string_width, $line, $text_attribs->{'text_alignment'});
249
            ($Tx, $Tw) = text_alignment($origin_llx, $self->{'width'}, $text_attribs->{'llx'} * $unitvalue, $string_width, $line, $text_attribs->{'text_alignment'});
240
            $line =~ s/^\s+//g;     # strip naughty leading spaces
250
            $line =~ s/^\s+//g;     # strip naughty leading spaces
241
            push @lines, {line=> $line, Tx => $Tx, Ty => $Ty, Tw => $Tw};
251
            push @lines, {line=> $line, Tx => $Tx, Ty => $Ty, Tw => $Tw};
242
        }
252
        }
Lines 253-259 sub draw_text { Link Here
253
            else {
263
            else {
254
                $box_height += $text_attribs->{'font_size'};
264
                $box_height += $text_attribs->{'font_size'};
255
            }
265
            }
256
            box ($origin_llx, $box_lly, $self->{'width'} - $text_attribs->{'llx'}, $box_height, $pdf);
266
            box ($origin_llx, $box_lly, $self->{'width'} - ( $text_attribs->{'llx'} * $unitvalue ), $box_height, $pdf);
257
        }
267
        }
258
        $pdf->Font($text_attribs->{'font'});
268
        $pdf->Font($text_attribs->{'font'});
259
        $pdf->FontSize($text_attribs->{'font_size'});
269
        $pdf->FontSize($text_attribs->{'font_size'});
Lines 267-277 sub draw_image { Link Here
267
    my ($self, $pdf) = @_;
277
    my ($self, $pdf) = @_;
268
    warn sprintf('No pdf object passed in.') and return -1 if !$pdf;
278
    warn sprintf('No pdf object passed in.') and return -1 if !$pdf;
269
    my $images = $self->{'layout'}->{'images'};
279
    my $images = $self->{'layout'}->{'images'};
280
281
    my $units = get_unit_values();
282
    my $unitvalue = 1;
283
    foreach my $un (@$units){
284
        if ($un->{'type'} eq $self->{'layout'}->{'units'}) {
285
            $unitvalue = $un->{'value'};
286
        }
287
    }
288
270
    PROCESS_IMAGES:
289
    PROCESS_IMAGES:
271
    foreach my $image (keys %$images) {
290
    foreach my $image (keys %$images) {
272
        next PROCESS_IMAGES if $images->{$image}->{'data_source'}->[0]->{'image_source'} eq 'none';
291
        next PROCESS_IMAGES if $images->{$image}->{'data_source'}->[0]->{'image_source'} eq 'none';
273
        my $Tx = $self->{'llx'} + $images->{$image}->{'Tx'};
292
        my $Tx = $self->{'llx'} + $images->{$image}->{'Tx'} * $unitvalue;
274
        my $Ty = $self->{'lly'} + $images->{$image}->{'Ty'};
293
        my $Ty = $self->{'lly'} + $images->{$image}->{'Ty'} * $unitvalue;
275
        warn sprintf('No image passed in.') and next if !$images->{$image}->{'data'};
294
        warn sprintf('No image passed in.') and next if !$images->{$image}->{'data'};
276
        my $intName = $pdf->AltJpeg($images->{$image}->{'data'},$images->{$image}->{'Sx'}, $images->{$image}->{'Sy'}, 1, $images->{$image}->{'alt'}->{'data'},$images->{$image}->{'alt'}->{'Sx'}, $images->{$image}->{'alt'}->{'Sy'}, 1);
295
        my $intName = $pdf->AltJpeg($images->{$image}->{'data'},$images->{$image}->{'Sx'}, $images->{$image}->{'Sy'}, 1, $images->{$image}->{'alt'}->{'data'},$images->{$image}->{'alt'}->{'Sx'}, $images->{$image}->{'alt'}->{'Sy'}, 1);
277
        my $obj_stream = "q\n";
296
        my $obj_stream = "q\n";
Lines 286-291 sub draw_image { Link Here
286
sub _draw_barcode {   # this is cut-and-paste from Label.pm because there is no common place for it atm...
305
sub _draw_barcode {   # this is cut-and-paste from Label.pm because there is no common place for it atm...
287
    my $self = shift;
306
    my $self = shift;
288
    my %params = @_;
307
    my %params = @_;
308
309
    my $units = get_unit_values();
310
    my $unitvalue = 1;
311
    foreach my $un (@$units){
312
        if ($un->{'type'} eq $self->{'layout'}->{'units'}) {
313
            $unitvalue = $un->{'value'};
314
        }
315
    }
316
289
    my $x_scale_factor = 1;
317
    my $x_scale_factor = 1;
290
    my $num_of_chars = length($params{'barcode_data'});
318
    my $num_of_chars = length($params{'barcode_data'});
291
    my $tot_bar_length = 0;
319
    my $tot_bar_length = 0;
Lines 305-312 sub _draw_barcode { # this is cut-and-paste from Label.pm because there is no Link Here
305
        }
333
        }
306
        eval {
334
        eval {
307
            PDF::Reuse::Barcode::Code39(
335
            PDF::Reuse::Barcode::Code39(
308
                x                   => $params{'llx'},
336
                x                   => $params{'llx'} * $unitvalue,
309
                y                   => $params{'lly'},
337
                y                   => $params{'lly'} * $unitvalue,
310
                value               => "*$params{barcode_data}*",
338
                value               => "*$params{barcode_data}*",
311
                xSize               => $x_scale_factor,
339
                xSize               => $x_scale_factor,
312
                ySize               => $params{'y_scale_factor'},
340
                ySize               => $params{'y_scale_factor'},
Lines 325-332 sub _draw_barcode { # this is cut-and-paste from Label.pm because there is no Link Here
325
        $x_scale_factor = ($params{'width'} / $tot_bar_length) * 0.9;
353
        $x_scale_factor = ($params{'width'} / $tot_bar_length) * 0.9;
326
        eval {
354
        eval {
327
            PDF::Reuse::Barcode::COOP2of5(
355
            PDF::Reuse::Barcode::COOP2of5(
328
                x                   => $params{'llx'},
356
                x                   => $params{'llx'}* $unitvalue,
329
                y                   => $params{'lly'},
357
                y                   => $params{'lly'}* $unitvalue,
330
                value               => "*$params{barcode_data}*",
358
                value               => "*$params{barcode_data}*",
331
                xSize               => $x_scale_factor,
359
                xSize               => $x_scale_factor,
332
                ySize               => $params{'y_scale_factor'},
360
                ySize               => $params{'y_scale_factor'},
Lines 343-350 sub _draw_barcode { # this is cut-and-paste from Label.pm because there is no Link Here
343
        $x_scale_factor = ($params{'width'} / $tot_bar_length) * 0.9;
371
        $x_scale_factor = ($params{'width'} / $tot_bar_length) * 0.9;
344
        eval {
372
        eval {
345
            PDF::Reuse::Barcode::Industrial2of5(
373
            PDF::Reuse::Barcode::Industrial2of5(
346
                x                   => $params{'llx'},
374
                x                   => $params{'llx'}* $unitvalue,
347
                y                   => $params{'lly'},
375
                y                   => $params{'lly'}* $unitvalue,
348
                value               => "*$params{barcode_data}*",
376
                value               => "*$params{barcode_data}*",
349
                xSize               => $x_scale_factor,
377
                xSize               => $x_scale_factor,
350
                ySize               => $params{'y_scale_factor'},
378
                ySize               => $params{'y_scale_factor'},
351
- 

Return to bug 18550