From e2e80737d354323be820e4176c2a965440ff089b Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Fri, 13 Apr 2012 00:20:00 +0200 Subject: [PATCH] Bug 7952 - PDF::Reuse under plack writes to console STDOUT instead to browser MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 Signed-off-by: Paul Poulain Signed-off-by: Chris Cormack --- C4/Creators/PDF.pm | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/C4/Creators/PDF.pm b/C4/Creators/PDF.pm index e7959a2a56..9aa182b287 100644 --- a/C4/Creators/PDF.pm +++ b/C4/Creators/PDF.pm @@ -21,6 +21,7 @@ use strict; use warnings; use PDF::Reuse; use PDF::Reuse::Barcode; +use File::Temp; BEGIN { use version; our $VERSION = qv('3.08.01.002'); @@ -42,7 +43,12 @@ sub new { 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; } @@ -52,6 +58,13 @@ sub End { # 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 { -- 2.39.5