--- loncom/interface/printout.pl 2021/01/25 18:06:55 1.168 +++ loncom/interface/printout.pl 2023/04/15 21:50:34 1.169 @@ -1,7 +1,7 @@ #!/usr/bin/perl # CGI-script to run LaTeX, dvips, ps2ps, ps2pdf etc. # -# $Id: printout.pl,v 1.168 2021/01/25 18:06:55 raeburn Exp $ +# $Id: printout.pl,v 1.169 2023/04/15 21:50:34 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -522,16 +522,39 @@ foreach $texfile (@texfile) { # Use gs to fix the postscript -> level 1.5 # .. if pdfs were included + # + # pswrite device was removed from ghostscript 9.09 and later, + # (ps2write device is used instead). + # check which device is available, and use as the value + # passed via -sDEVICE= arg in gs call to fix the postscript. + # if ($pdfs_converted > 0) { - $comma = "gs -sDEVICE=pswrite -dLanguageLevel=1.5 "; - &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); - + my @possdevices = qw(ps2write pswrite); + my $device; + foreach my $poss (@possdevices) { + if (open(PIPE,"gs -h |grep ' $poss ' 2>&1 |")) { + my $output = ; + close(PIPE); + chomp($output); + if ($output =~ /\Q $poss \E/) { + $device = $poss; + } + } + last if ($device ne ''); + } + if ($device ne '') { + $comma = "gs -sDEVICE=$device -dLanguageLevel=1.5 "; + &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); + #--- - &busy_wait_command("mv $tempo_file $new_name_file", - 'File move', \%prog_state, $new_name_file); + if (-e $tempo_file) { + &busy_wait_command("mv $tempo_file $new_name_file", + 'File move', \%prog_state, $new_name_file); + } + } } if ($laystyle eq 'album' and $numberofcolumns eq '2') { $comma = "psnup $papera -2 -s1.0 $new_name_file";