--- loncom/interface/printout.pl 2024/07/11 12:44:40 1.171 +++ loncom/interface/printout.pl 2024/10/16 17:48:08 1.173 @@ -1,7 +1,7 @@ #!/usr/bin/perl # CGI-script to run LaTeX, dvips, ps2ps, ps2pdf etc. # -# $Id: printout.pl,v 1.171 2024/07/11 12:44:40 raeburn Exp $ +# $Id: printout.pl,v 1.173 2024/10/16 17:48:08 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -447,12 +447,10 @@ foreach $texfile (@texfile) { $new_name_file =~ s/\.dvi/\.ps/; # Explicitly include a switch for papertype, otherwise dvips will default # to whatever is listed first in config.ps (which in most cases is a4). -# Historically (since 2004) LON-CAPA printing expected to use the default, -# i.e., a papertype of a4, when the user selected letter [8 1/2 x 11 in] -# in the Layout options, so I follow that convention if $papera is letter. - my $papera=$paper; - if ($papera eq 'letter') {$papera='a4';} - if ($papera ne '') {$papera='-t'.$papera;} + my $papera; + unless ($paper eq '') { + $papera='-t'.$paper; + } my $extra_ps_header = $perlvar{'lonLib'} .'/includepsheader.ps'; my $comma = "dvips $papera -h $extra_ps_header -Ppdf -G0 -o $new_name_file"; &busy_wait_command("$comma $name_file 1>/dev/null 2>/dev/null", @@ -544,7 +542,19 @@ foreach $texfile (@texfile) { last if ($device ne ''); } if ($device ne '') { - $comma = "gs -sDEVICE=$device -dLanguageLevel=1.5 --permit-file-read=* "; + my ($major,$minor); + if (open(PIPE,"gs -v |grep 'GPL Ghostscript' 2>&1 |")) { + my $info = ; + close(PIPE); + chomp($info); + if ($info =~ /Ghostscript\s+(\d+)\.(\d+)/) { + ($major,$minor) = ($1,$2); + } + } + $comma = "gs -sDEVICE=$device -dLanguageLevel=1.5 "; + if (($major > 9) || (($major == 9) && ($minor >= 50))) { + $comma .= '--permit-file-read=* '; + } &busy_wait_command("$comma -o $tempo_file $new_name_file 2>/dev/null 1>/dev/null", "for $status_statement now validating PS", \%prog_state, $tempo_file);