--- loncom/interface/printout.pl 2020/02/18 23:57:54 1.167 +++ 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.167 2020/02/18 23:57:54 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"; @@ -984,7 +1007,6 @@ sub convert_figure { &File::Path::mkpath($path,0,0777); $not_eps =~ s/^\s+//; $not_eps =~ s/\s+$//; - $not_eps =~ s/ /\\ /g; my $prettyname=$not_eps; if ($advanced_role) { $prettyname=~s|$perlvar{'lonDocRoot'}/|/|;