Without name option to prFile, PDF::Reuse opens '-' file which is real
console STDOUT on plack so pdf file gets emited to terminal instead of
sending it to browser.
This change creates temporary file using File::Temp, pass it to PDF::Reuse
and then reads it back and prints it out for plack (or CGI) to pick up.
Test secenario:
1. Home › Tools › Patron Card Creator › Manage Card Batches
2. select batch checkbox and click Export
3. select template and click Export
4. click on pdf file to download it
Signed-off-by: Chris Cormack <chris@bigballofwax.co.nz>
Signed-off-by: Paul Poulain <paul.poulain@biblibre.com>
use warnings;
use PDF::Reuse;
use PDF::Reuse::Barcode;
+use File::Temp;
BEGIN {
use version; our $VERSION = qv('3.07.00.049');
delete($opts{InitVars});
prDocDir($opts{'DocDir'}) if $opts{'DocDir'};
delete($opts{'DocDir'});
- prFile(%opts);
+
+ my $fh = File::Temp->new( UNLINK => 0, SUFFIX => '.pdf' );
+ $opts{Name} = $self->{filename} = "$fh"; # filename
+ close $fh; # we need just filename
+
+ prFile(\%opts);
bless ($self, $type);
return $self;
}
# if the pdf stream is utf8, explicitly set it to utf8; this avoids at lease some wide character errors -chris_n
utf8::encode($PDF::Reuse::stream) if utf8::is_utf8($PDF::Reuse::stream);
prEnd();
+
+ # slurp temporary filename and print it out for plack to pick up
+ local $/ = undef;
+ open(my $fh, '<', $self->{filename}) || die "$self->{filename}: $!";
+ print <$fh>;
+ close $fh;
+ unlink $self->{filename};
}
sub Add {