--- loncom/interface/printout.pl 2016/05/21 21:15:36 1.162 +++ loncom/interface/printout.pl 2017/11/12 15:41:45 1.165 @@ -1,7 +1,7 @@ #!/usr/bin/perl # CGI-script to run LaTeX, dvips, ps2ps, ps2pdf etc. # -# $Id: printout.pl,v 1.162 2016/05/21 21:15:36 raeburn Exp $ +# $Id: printout.pl,v 1.165 2017/11/12 15:41:45 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -40,6 +40,7 @@ use Apache::lonlocal; use Apache::lonmsg(); use LONCAPA::Enrollment; use LONCAPA::Configuration; +use LONCAPA; use strict; @@ -201,7 +202,7 @@ my $tableofindex = $env{'cgi.'.$identifi my $advanced_role = $env{'cgi.'.$identifier.'.role'}; my $number_of_files = $env{'cgi.'.$identifier.'.numberoffiles'}+1; my $student_names = $env{'cgi.'.$identifier.'.studentnames'}; -my $backref = &Apache::lonnet::unescape($env{'cgi.'.$identifier.'.backref'}); +my $backref = &unescape($env{'cgi.'.$identifier.'.backref'}); my @names_pack=(); @@ -446,7 +447,7 @@ foreach $texfile (@texfile) { # 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 eq 'letter') {$papera='a4';} if ($papera ne '') {$papera='-t'.$papera;} my $extra_ps_header = $perlvar{'lonLib'} .'/includepsheader.ps'; my $comma = "dvips $papera -h $extra_ps_header -Ppdf -G0 -o $new_name_file"; @@ -979,18 +980,29 @@ sub convert_figure { $eps_f = $perlvar{'lonPrtDir'}.'/'.$eps_f; &debug("Converting pdf $not_eps to postscript: $eps_f"); - system("pdftops $not_eps $eps_f"); - $pdfs_converted++; # Need to fix ps in last pass. + my @args = ('pdftops',$not_eps,$eps_f); + system({$args[0]} @args); # Indirect object forces list processing mode. + # See perlfunc documentation for exec(). + if ($? and $advanced_role) { + print '

' + .&mt('An error occurred during the conversion of [_1] to postscript.', + ''.$prettyname.'') + .'

'; + } else { + $pdfs_converted++; # Need to fix ps in last pass. + } } else { - system("convert $not_eps $eps_f"); - if($? and $advanced_role){ - print '

' - .&mt('An error occurred during the conversion of [_1].', + my @args = ('convert',$not_eps,$eps_f); + system({$args[0]} @args); # Indirect object forces list processing mode. + # See perlfunc documentation for exec(). + if ($? and $advanced_role) { + print '

' + .&mt('An error occurred during the conversion of [_1].', ''.$prettyname.'') - .'
' - .&mt('If possible try to save this image using different settings and republish it.') - .'

'; - } + .'
' + .&mt('If possible try to save this image using different settings and republish it.') + .'

'; + } } if (not -e $eps_f) {