X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=createpdf.pl;h=520f08bc4b269115548d5c75e6d330e7a2142ef2;hb=feb092ff5ca9312e66e677eca58c0a91732d072e;hp=86187fba167590e27420cb3930d6e115c28451ea;hpb=0f135d31b052aa50c51cc4a15455d02e076dfae8;p=webpdf diff --git a/createpdf.pl b/createpdf.pl index 86187fb..520f08b 100755 --- a/createpdf.pl +++ b/createpdf.pl @@ -70,7 +70,7 @@ if ($filename =~ /(.*)\.(?:e?ps|pdf)$/i) { $outname = "$1.pdf"; # Run through ImageMagick first of all, then gs - open PIPE, "| convert $2:- ps:- | gs $pdfopts -dCompatbilityLevel=1.4 -dNOPAUSE -dPATCH -sDEVICE=pdfwrite -dSAFER -sOutputFile=output/$pdf_filename -c '.setpdfwrite $psopts' -f - >&2" + open PIPE, "| convert $2:- pdf:- | gs $pdfopts -dCompatbilityLevel=1.4 -dNOPAUSE -dPATCH -sDEVICE=pdfwrite -dSAFER -sOutputFile=output/$pdf_filename -c '.setpdfwrite $psopts' -f - >&2" or die "convert: $!"; my ($buf, $ret); @@ -90,7 +90,7 @@ if ($filename =~ /(.*)\.(?:e?ps|pdf)$/i) { print PIPE $buf; } close PIPE; -} elsif ($filename =~ /(.*)\.(doc|xls|ppt)$/i) { +} elsif ($filename =~ /(.*)\.(doc|xls|ppt|sxw|sxc|sxi)$/i) { $outname = "$1.pdf"; my $ext = $2; @@ -139,8 +139,10 @@ EOF my $size = -s "output/$pdf_filename"; +(my $sanitized_outname = $outname) =~ tr/a-zA-Z0-9. -/_/c; + print "Content-type: application/pdf\n"; -print "Content-disposition: attachment; filename=\"$outname\"\n"; # FIXME: XSS problems? +print "Content-disposition: attachment; filename=\"$sanitized_outname\"\n"; print "Content-length: $size\n\n"; system("cat output/$pdf_filename"); # yuck?