--- loncom/interface/printout.pl 2004/09/09 15:30:49 1.69 +++ loncom/interface/printout.pl 2005/03/15 11:19:28 1.74 @@ -1,7 +1,7 @@ #!/usr/bin/perl # CGI-script to run LaTeX, dvips, ps2ps, ps2pdf etc. # -# $Id: printout.pl,v 1.69 2004/09/09 15:30:49 matthew Exp $ +# $Id: printout.pl,v 1.74 2005/03/15 11:19:28 foxr Exp $ # # Copyright Michigan State University Board of Trustees # @@ -32,6 +32,7 @@ use File::Path; use IO::File; use Image::Magick; use Apache::lonhtmlcommon; +use Apache::lonnet(); use Apache::loncommon; use Apache::lonlocal; @@ -67,7 +68,7 @@ END my $advans_role = $ENV{'cgi.'.$identifier.'role'}; my $number_of_files = $ENV{'cgi.'.$identifier.'numberoffiles'}+1; my $student_names = $ENV{'cgi.'.$identifier.'studentnames'}; - my $backref = $ENV{'cgi.'.$identifier.'backref'}; + my $backref = &Apache::lonnet::unescape($ENV{'cgi.'.$identifier.'backref'}); my $adv = $ENV{'request.role.adv'}; @@ -84,7 +85,9 @@ END my $duefile = $texfile; $duefile =~ s/^([^\.]+printout)[^t]+\.tex/$1\.due/; #do we have figures? + # print "Figure file: $figfile\n"; if (-e $figfile) { + # print "$figfile exists\n"; my %done_conversion; my $temporary_file=IO::File->new($figfile) || die "Couldn't open fig file $figfile for reading: $!\n"; my @content_of_file = <$temporary_file>; @@ -95,7 +98,9 @@ END foreach my $not_eps (@content_of_file) { chomp($not_eps); if ($not_eps ne '') { + # print "Converting $not_eps"; # Debugging. my $status_statement='EPS picture for '.$not_eps; + # print "$status_statement\n"; $not_eps=~s|\/\.\/|\/|g; my $eps_f = $not_eps; $eps_f =~ s/\.[^.]*$/\.eps/i; @@ -109,26 +114,24 @@ END $eps_f=~/$Apache::lonnet::perlvar{'lonUsersDir'}\/([^\/]+)\/\w\/\w\/\w\/(.+)/; $eps_f = '/home/httpd/prtspool/'.$1.'/'.$2; } + $eps_f =~ s/ /\_/g; # Spaces are problematic for system commands and LaTeX. my $path=$eps_f; - $path=~s/\/([^\/]+)\.eps$//; + $path =~ s/\/([^\/]+)\.eps$//; + # print "Final file path: $path "; # Debugging File::Path::mkpath($path,0,0777); - my $image = Image::Magick->new; $not_eps =~ s/^\s+//; $not_eps =~ s/\s+$//; - if ( exists($done_conversion{$not_eps})) { - next; - } + $not_eps =~ s/ /\\ /g; + if ( exists($done_conversion{$not_eps})) { next; } if ($adv) { my $prettyname=$not_eps; $prettyname=~s|/home/([^/]+)/public_html|/priv/$1|; $prettyname=~s|$Apache::lonnet::perlvar{'lonDocRoot'}/|/|; - &Apache::lonhtmlcommon::Update_PrgWin('',\%prog_state,'Converting to EPS '.$prettyname); } + &Apache::lonhtmlcommon::Update_PrgWin('',\%prog_state,'Converting to EPS '.$prettyname); + } $done_conversion{$not_eps}=1; - my $status = $image->Read($not_eps); - if ($status) {print " $status ";} - $image->Set(page => '+100+200'); - $status = $image->Write($eps_f); - if ($status) {print " $status ";} + # print "Converting $not_eps -> $eps_f"; # Debugging + system("convert $not_eps $eps_f"); #check is eps exist in prtspool if(not -e $eps_f) { for (my $i=0;$i<10000;$i++) { @@ -140,7 +143,9 @@ END } } } - if ($adv) { &Apache::lonhtmlcommon::Close_PrgWin('',\%prog_state); } + if ($adv) { + &Apache::lonhtmlcommon::Close_PrgWin('',\%prog_state); + } unlink($figfile); } #print "$texfile\n"; #name of the tex file for debugging only @@ -226,7 +231,7 @@ foreach $texfile (@texfile) { if ($whereitbegins!=-1 and $whereitends!=-1) { print "With very high probability this error occured in ".substr($body_log_file,$whereitbegins+26,$whereitends-$whereitbegins-26)."

"; } - print "Here are the error messages in the LaTeX log file

"; + print "Here are the error messages in the LaTeX log file

";
 	  my $sygnal = 0;
 	  for (my $i=0;$i<=$#content_of_file;$i++) {
 	      if ($content_of_file[$i]=~m/^Runaway argument?/ or $content_of_file[$i]=~m/^!/) {
@@ -236,9 +241,10 @@ foreach $texfile (@texfile) {
 		  $sygnal = 0;
 	      } 
 	      if ($sygnal) {
-		  print "$content_of_file[$i]
"; + print "$content_of_file[$i]"; } } + print "
\n"; if ($advans_role) { print "The link to "; $logfilename=~s/\/home\/httpd//;