--- loncom/interface/printout.pl 2006/04/20 02:24:08 1.97 +++ loncom/interface/printout.pl 2006/06/06 11:04:18 1.99 @@ -238,15 +238,36 @@ print "Return $eps_f"; # Debugging system("convert $not_eps $eps_f"); - #check is eps exist in prtspool - if(not -e $eps_f) { + # check is eps exist in prtspool + if (not -e $eps_f) { + # converting an animated gif creates either: + # anim.gif.eps.0 + # or + # anim.gif-0.eps for (my $i=0;$i<10000;$i++) { if (-e $eps_f.'.'.$i) { - rename $eps_f.'.'.$i, $eps_f; + rename($eps_f.'.'.$i, $eps_f); last; } + my $anim_eps = $eps_f; + $anim_eps =~ s/(\.[^.]*)\.eps$/$1-$i\.eps/i; + if (-e $anim_eps) { + rename($anim_eps, $eps_f); + last; + } + } + } + # imagemagick 6.2.0-6.2.7 fails to properly handle + # convert anim.gif anim.gif.eps + # it creates anim.eps instead. + if (not -e $eps_f) { + my $eps_f2 = $eps_f; + $eps_f2 =~ s/\.[^.]*\.eps$/\.eps/i; + if(-e $eps_f2) { + rename($eps_f2,$eps_f); } - } + } + } } if ($advanced_role) { @@ -454,6 +475,7 @@ foreach $texfile (@texfile) { "for $status_statement now Converting to PS", \%prog_state,$new_name_file); if (-e $new_name_file) { + &repaginate_postscript($new_name_file); print "

PDF output file (see link below)

\n"; $new_name_file =~ m/^(.*)\./; my $ps_file = my $tempo_file = $1.'temporar.ps'; @@ -528,6 +550,7 @@ foreach $texfile (@texfile) { "for $status_statement now Converting to PS", \%prog_state,$new_name_file); if (-e $new_name_file) { + &repaginate_postscript($new_name_file); print "
"; $new_name_file =~ m/^(.*)\./; my $ps_file = my $tempo_file = $1.'temporar.ps'; @@ -638,5 +661,27 @@ sub busy_wait_command { } +# Repagninate a postscript file. +# What we need to do: +# - Count the number of pages in each student. +# - Add pages between each student so that each student's output is +# the maximum number of pages. +# +sub repaginate_postscript { + # For now just strip out the STARTOFSTUDENTSTAMP + # ENDOFSTUDENTSTAMP markers in the postscript. + + my ($postscript_filename) = @_; + open(PSFILE, "<$postscript_filename"); + my @psfilelines = ; + close(PSFILE); + my $psbody = join('', @psfilelines); + $psbody =~ s/STARTOFSTUDENTSTAMP//g; + $psbody =~ s/ENDOFSTUDENTSTAMP//g; + open(PSFILE, ">$postscript_filename"); + print PSFILE $psbody; + + close PSFILE; +}