File Coverage

blib/lib/PDF/Labels/Producer.pm
Criterion Covered Total %
statement 15 66 22.7
branch 0 18 0.0
condition 0 7 0.0
subroutine 5 14 35.7
pod 0 9 0.0
total 20 114 17.5


line stmt bran cond sub pod time code
1              
2             package PDF::Labels::Producer;
3              
4 1     1   5 use vars qw(@ISA);
  1         2  
  1         43  
5 1     1   6 use base qw(PDF::Labels::base);
  1         1  
  1         96  
6 1     1   5 use strict;
  1         1  
  1         33  
7              
8 1     1   850 use Paper::Specs strict => 1, layout => "pdf";
  1         869  
  1         6  
9              
10 1     1   1136 use PDF::API2;
  1         3768649  
  1         735  
11              
12             sub filename {
13              
14 0     0 0   my $self=shift;
15 0 0         if (@_) {
16 0           $self->{'filename'} = shift;
17             }
18              
19 0   0       $self->{'filename'} ||= "labels.pdf";
20 0           return $self->{'filename'};
21              
22             }
23              
24             sub generate {
25              
26 0     0 0   my $self=shift;
27              
28 0           my $pdf=PDF::API2->new;
29 0           my $page;
30              
31 0           my $layout=$self->layout;
32 0           my $form =$self->form;
33 0           $layout->prep( pdf => $pdf, size => [ $form->label_size ] );
34              
35 0           while (my $data = $self->fetch) {
36              
37 0           my ($r, $c) = $self->next_location;
38              
39 0 0 0       if ($r == 1 && $c == 1) {
40 0           $page = $pdf->page();
41 0           $page->mediabox( $form->sheet_size );
42             }
43              
44 0           $layout->print( data => $data, loc => [ $form->label_location( $r, $c), $form->label_size ],
45             page => $page, r => $r, c => $c );
46              
47             }
48              
49 0           $pdf->saveas( $self->filename );
50 0           $pdf->end;
51              
52             }
53              
54             sub form {
55              
56 0     0 0   my $self=shift;
57 0 0         if (@_) {
58 0 0         if ( ref $_[0] eq 'ARRAY' ) {
59 0           $self->{'form'} = Paper::Specs->find( @{$_[0]} );
  0            
60             } else {
61 0           $self->{'form'} = Paper::Specs->find( @_ );
62             }
63             }
64 0           return $self->{'form'};
65              
66             }
67              
68             sub skip_first {
69              
70             return {
71              
72 0     0 0   };
73              
74             }
75              
76             sub skip_all {
77              
78             return {
79              
80 0     0 0   };
81              
82             }
83              
84              
85             sub next_location {
86              
87 0     0 0   my $self=shift;
88              
89             # XXX provision for skipping empty spots
90 0           $self->{'c'}++;
91              
92 0 0         if ($self->{'c'} > $self->form->label_cols) {
93 0           $self->{'c'}=1;
94 0           $self->{'r'}++;
95             }
96              
97 0 0         if ($self->{'r'} > $self->form->label_rows) {
98 0           $self->{'c'}=1; $self->{'r'}=1;
  0            
99             }
100              
101 0   0       $self->{'r'} ||=1;
102              
103 0           return ($self->{'r'}, $self->{'c'} );
104              
105             }
106              
107             sub fetch {
108              
109 0     0 0   my $self=shift;
110 0           return shift @{$self->{'data'}};
  0            
111              
112             }
113              
114             sub data {
115              
116 0     0 0   my $self=shift;
117 0           $self->{'data'} = [ @_ ];
118              
119             }
120              
121             sub layout {
122              
123 0     0 0   my $self=shift;
124              
125 0 0         if (@_) {
126 0           $self->{'layout'} = shift;
127             }
128              
129 0 0         unless ($self->{'layout'}) {
130 0           eval "use PDF::Labels::Layout::Simple";
131 0 0         die $@ if $@;
132 0           $self->{'layout'} = PDF::Labels::Layout::Simple->new;
133             }
134              
135 0           return $self->{'layout'};
136              
137             }
138              
139             1;