Diff for /loncom/interface/printout.pl between versions 1.67 and 1.75

version 1.67, 2004/08/18 18:56:46 version 1.75, 2005/03/23 22:37:46
Line 32  use File::Path; Line 32  use File::Path;
 use IO::File;  use IO::File;
 use Image::Magick;  use Image::Magick;
 use Apache::lonhtmlcommon;  use Apache::lonhtmlcommon;
   use Apache::lonnet();
 use Apache::loncommon;  use Apache::loncommon;
 use Apache::lonlocal;  use Apache::lonlocal;
   
Line 64  END Line 65  END
   my $selectionmade = $ENV{'cgi.'.$identifier.'.selection'};    my $selectionmade = $ENV{'cgi.'.$identifier.'.selection'};
   my $tableofcontents = $ENV{'cgi.'.$identifier.'tableofcontents'};    my $tableofcontents = $ENV{'cgi.'.$identifier.'tableofcontents'};
   my $tableofindex = $ENV{'cgi.'.$identifier.'tableofindex'};    my $tableofindex = $ENV{'cgi.'.$identifier.'tableofindex'};
   my $advans_role = $ENV{'cgi.'.$identifier.'role'};    my $advanced_role = $ENV{'cgi.'.$identifier.'role'};
   my $number_of_files = $ENV{'cgi.'.$identifier.'numberoffiles'}+1;    my $number_of_files = $ENV{'cgi.'.$identifier.'numberoffiles'}+1;
   my $student_names = $ENV{'cgi.'.$identifier.'studentnames'};    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'};    my $adv = $ENV{'request.role.adv'};
Line 84  END Line 85  END
   my $duefile = $texfile;    my $duefile = $texfile;
   $duefile =~ s/^([^\.]+printout)[^t]+\.tex/$1\.due/;    $duefile =~ s/^([^\.]+printout)[^t]+\.tex/$1\.due/;
   #do we have figures?    #do we have figures?
     # print "Figure file: $figfile\n";
   if (-e $figfile) {    if (-e $figfile) {
         # print "$figfile exists\n";
       my %done_conversion;        my %done_conversion;
       my $temporary_file=IO::File->new($figfile) || die "Couldn't open file for reading: $!\n";        my $temporary_file=IO::File->new($figfile) || die "Couldn't open fig file $figfile for reading: $!\n";
       my @content_of_file = <$temporary_file>;        my @content_of_file = <$temporary_file>;
       close $temporary_file;          close $temporary_file;  
       my $noteps;        my $noteps;
Line 95  END Line 98  END
       foreach my $not_eps (@content_of_file) {        foreach my $not_eps (@content_of_file) {
   chomp($not_eps);    chomp($not_eps);
   if ($not_eps ne '') {    if ($not_eps ne '') {
         # print "Converting $not_eps"; # Debugging.
               my $status_statement='EPS picture for '.$not_eps;                my $status_statement='EPS picture for '.$not_eps;
         # print "$status_statement\n";
       $not_eps=~s|\/\.\/|\/|g;        $not_eps=~s|\/\.\/|\/|g;
       my $eps_f = $not_eps;        my $eps_f = $not_eps;
       $eps_f =~ s/\.[^.]*$/\.eps/i;        $eps_f =~ s/\.[^.]*$/\.eps/i;
Line 109  END Line 114  END
   $eps_f=~/$Apache::lonnet::perlvar{'lonUsersDir'}\/([^\/]+)\/\w\/\w\/\w\/(.+)/;    $eps_f=~/$Apache::lonnet::perlvar{'lonUsersDir'}\/([^\/]+)\/\w\/\w\/\w\/(.+)/;
   $eps_f = '/home/httpd/prtspool/'.$1.'/'.$2;    $eps_f = '/home/httpd/prtspool/'.$1.'/'.$2;
       }        }
         $eps_f  =~ s/ /\_/g; # Spaces are problematic for system commands and LaTeX.
       my $path=$eps_f;        my $path=$eps_f;
       $path=~s/\/([^\/]+)\.eps$//;        $path =~ s/\/([^\/]+)\.eps$//;
         # print "Final file path: $path "; # Debugging
       File::Path::mkpath($path,0,0777);        File::Path::mkpath($path,0,0777);
       my $image = Image::Magick->new;  
       $not_eps =~ s/^\s+//;        $not_eps =~ s/^\s+//;
       $not_eps =~ s/\s+$//;        $not_eps =~ s/\s+$//;
       if ( exists($done_conversion{$not_eps})) {        $not_eps =~ s/ /\\ /g;
   next;        if ( exists($done_conversion{$not_eps})) { next; }
       }  
       if ($adv) {        if ($adv) {
   my $prettyname=$not_eps;    my $prettyname=$not_eps;
   $prettyname=~s|/home/([^/]+)/public_html|/priv/$1|;    $prettyname=~s|/home/([^/]+)/public_html|/priv/$1|;
   $prettyname=~s|$Apache::lonnet::perlvar{'lonDocRoot'}/|/|;    $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;        $done_conversion{$not_eps}=1;
       my $status = $image->Read($not_eps);        # print "Converting $not_eps -> $eps_f"; # Debugging
       if ($status) {print "  $status  ";}        system("convert $not_eps $eps_f");
       $image->Set(page => '+100+200');   
       $status = $image->Write($eps_f);      
       if ($status) {print "  $status  ";}  
               #check is eps exist in prtspool                #check is eps exist in prtspool
               if(not -e $eps_f) {                if(not -e $eps_f) {
   for (my $i=0;$i<10000;$i++) {    for (my $i=0;$i<10000;$i++) {
Line 140  END Line 143  END
       }          }  
   }    }
       }        }
       if ($adv) { &Apache::lonhtmlcommon::Close_PrgWin('',\%prog_state); }        if ($adv) { 
     &Apache::lonhtmlcommon::Close_PrgWin('',\%prog_state); 
         }
       unlink($figfile);        unlink($figfile);
   }    }
   #print "$texfile\n"; #name of the tex file for debugging only       #print "$texfile\n"; #name of the tex file for debugging only   
Line 210  foreach $texfile (@texfile) { Line 215  foreach $texfile (@texfile) {
       } #to create index        } #to create index
       #Do we have a latex error in the log file?        #Do we have a latex error in the log file?
       my $logfilename = $texfile; $logfilename =~ s/\.tex$/\.log/;        my $logfilename = $texfile; $logfilename =~ s/\.tex$/\.log/;
       my $temporary_file=IO::File->new($logfilename) || die "Couldn't open file for reading: $!\n";        my $temporary_file=IO::File->new($logfilename) || die "Couldn't open log file $logfilename for reading: $!\n";
       my @content_of_file = <$temporary_file>;        my @content_of_file = <$temporary_file>;
       close $temporary_file;         close $temporary_file; 
       my $body_log_file = join(' ',@content_of_file);        my $body_log_file = join(' ',@content_of_file);
Line 226  foreach $texfile (@texfile) { Line 231  foreach $texfile (@texfile) {
   if ($whereitbegins!=-1 and $whereitends!=-1) {    if ($whereitbegins!=-1 and $whereitends!=-1) {
        print "With very high probability this error occured in ".substr($body_log_file,$whereitbegins+26,$whereitends-$whereitbegins-26)."<br /><br />";         print "With very high probability this error occured in ".substr($body_log_file,$whereitbegins+26,$whereitends-$whereitbegins-26)."<br /><br />";
   }    }
   print "Here are the error messages in the LaTeX log file</br><br />";    print "Here are the error messages in the LaTeX log file</br><br /><pre>";
   my $sygnal = 0;    my $sygnal = 0;
   for (my $i=0;$i<=$#content_of_file;$i++) {    for (my $i=0;$i<=$#content_of_file;$i++) {
       if ($content_of_file[$i]=~m/^Runaway argument?/ or $content_of_file[$i]=~m/^!/) {        if ($content_of_file[$i]=~m/^Runaway argument?/ or $content_of_file[$i]=~m/^!/) {
Line 236  foreach $texfile (@texfile) { Line 241  foreach $texfile (@texfile) {
   $sygnal = 0;    $sygnal = 0;
       }         } 
       if ($sygnal) {        if ($sygnal) {
   print "$content_of_file[$i]<br />";    print "$content_of_file[$i]";
       }          }  
   }    }
           if ($advans_role) {      print "</pre>\n";
             if ($advanced_role) {  
               print "<b><big>The link to ";                print "<b><big>The link to ";
               $logfilename=~s/\/home\/httpd//;                $logfilename=~s/\/home\/httpd//;
       print "<a href=\"$logfilename\">Your log file </a></big></b>";        print "<a href=\"$logfilename\">Your log file </a></big></b>";
       print "\n";        print "\n";
               #link tooriginal LaTeX file (included according Michael Hamlin desire)                #link tooriginal LaTeX file (included according Michael Hamlin desire)
       my $tex_temporary_file=IO::File->new($texfile) || die "Couldn't open file for reading: $!\n";        my $tex_temporary_file=IO::File->new($texfile) || die "Couldn't open tex file $texfile for reading: $!\n";
       my @tex_content_of_file = <$tex_temporary_file>;        my @tex_content_of_file = <$tex_temporary_file>;
       close $tex_temporary_file;         close $tex_temporary_file; 
       my $body_tex_file = join(' ',@tex_content_of_file);        my $body_tex_file = join(' ',@tex_content_of_file);
Line 318  foreach $texfile (@texfile) { Line 324  foreach $texfile (@texfile) {
 #  unlink @garb;  #  unlink @garb;
       unlink $duefile;        unlink $duefile;
       print "<a href=\"/prtspool/$pdf_file\">Your PDF document</a>";        print "<a href=\"/prtspool/$pdf_file\">Your PDF document</a>";
       if ($advans_role) {      }
   print "<br /><br />";    if ($advanced_role) {  
   print "<b><big>The link to ";        print "<br /><br />";
   $logfilename=~s/\/home\/httpd//;        print "<b><big>The link to ";
   print "<a href=\"$logfilename\">Your log file </a></big></b>";        $logfilename=~s/\/home\/httpd//;
   print "\n";        print "<a href=\"$logfilename\">Your log file </a></big></b>";
   #link tooriginal LaTeX file (included according Michael Hamlin desire)        print "\n";
   my $tex_temporary_file=IO::File->new($texfile) || die "Couldn't open file for reading: $!\n";        #link tooriginal LaTeX file (included according Michael Hamlin desire)
   my @tex_content_of_file = <$tex_temporary_file>;        my $tex_temporary_file=IO::File->new($texfile) || die "Couldn't open tex file $texfile for reading: $!\n";
   close $tex_temporary_file;         my @tex_content_of_file = <$tex_temporary_file>;
   my $body_tex_file = join(' ',@tex_content_of_file);        close $tex_temporary_file; 
   $texfile =~ s/\.tex$/aaaaa\.html/;        my $body_tex_file = join(' ',@tex_content_of_file);
   $tex_temporary_file = IO::File->new('>'.$texfile);         $texfile =~ s/\.tex$/aaaaa\.html/;
   print $tex_temporary_file '<html><head><title>LOGFILE</title></head><body><pre>'.$body_tex_file.'</pre></body></html>'."\n";        $tex_temporary_file = IO::File->new('>'.$texfile); 
   print "<br /><br />";        print $tex_temporary_file '<html><head><title>LOGFILE</title></head><body><pre>'.$body_tex_file.'</pre></body></html>'."\n";
   print "<b><big>The link to ";        print "<br /><br />";
   $texfile=~s/\/home\/httpd//;        print "<b><big>The link to ";
   print "<a href=\"$texfile\">Your original LaTeX file </a></big></b>";        $texfile=~s/\/home\/httpd//;
   print "\n";        print "<a href=\"$texfile\">Your original LaTeX file </a></big></b>";
       }        print "\n";
   }    }
       } else {        } else {
   #LaTeX successfully parsed tex file     #LaTeX successfully parsed tex file 
Line 380  foreach $texfile (@texfile) { Line 386  foreach $texfile (@texfile) {
                                'a6'=>'<< /PageSize [298.75 421.1] >> setpagedevice',                                 'a6'=>'<< /PageSize [298.75 421.1] >> setpagedevice',
    };     };
       if ($paper ne 'letter') {        if ($paper ne 'letter') {
   open(FFH,'<',$ps_file) || die "Couldn't open file for reading: $!\n";    open(FFH,'<',$ps_file) || die "Couldn't open ps file $ps_file for reading: $!\n";
   my $new_ps_file='new'.$ps_file;    my $new_ps_file='new'.$ps_file;
   open(FFHS,'>',$new_ps_file) || die "Couldn't open file for reading: $!\n";    open(FFHS,'>',$new_ps_file) || die "Couldn't open new ps file $new_ps_file for reading: $!\n";
   print FFHS $addtoPSfile->{$paper}."\n";    print FFHS $addtoPSfile->{$paper}."\n";
   while (<FFH>) {    while (<FFH>) {
       print FFHS $_;        print FFHS $_;
Line 406  foreach $texfile (@texfile) { Line 412  foreach $texfile (@texfile) {
       my @garb = ($texlog,$texaux,$texdvi,$texps);        my @garb = ($texlog,$texaux,$texdvi,$texps);
 #  unlink @garb;  #  unlink @garb;
       unlink $duefile;        unlink $duefile;
       print "<a href=\"/prtspool/$pdf_file\">$link_text</a>";        print "<a href=\"/prtspool/$pdf_file\">$link_text - click here to download pdf</a>";
       print "\n";        print "\n";
   }    }
       }          }  

Removed from v.1.67  
changed lines
  Added in v.1.75


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>