--- loncom/interface/printout.pl 2009/03/24 10:29:39 1.140 +++ loncom/interface/printout.pl 2009/04/17 10:02:49 1.141 @@ -1,7 +1,7 @@ #!/usr/bin/perl # CGI-script to run LaTeX, dvips, ps2ps, ps2pdf etc. # -# $Id: printout.pl,v 1.140 2009/03/24 10:29:39 foxr Exp $ +# $Id: printout.pl,v 1.141 2009/04/17 10:02:49 foxr Exp $ # # Copyright Michigan State University Board of Trustees # @@ -45,9 +45,14 @@ use strict; my $busy_wait_timeout = 30; + +my $debugging = 0; + sub debug { - my ($text) = @_; - print "$text
\n"; + if ($debugging) { + my ($text) = @_; + print "$text
\n"; + } } # Determine if a user is operating as a student for this course/domain. @@ -118,7 +123,7 @@ sub send_error_mail { if (&is_student()) { # build the subject and message body: - # print "sending message to course coordinators.
"; + &debug("sending message to course coordinators."); # Todo: Convert badurl into a url from file path: @@ -137,9 +142,9 @@ sub send_error_mail { } my (undef, %receivers) = &Apache::lonmsg::decide_receiver(undef, 0, 1,1,1); - # print "
sending...section: $env{'request.course.sec'}"; + &debug("sending...section: $env{'request.course.sec'}"); foreach my $dest (keys %receivers) { - # print "
dest is $dest"; + &debug("dest is $dest"); my @destinfo = split(/:/,$dest); my $user = $destinfo[0]; my $dom = $destinfo[1]; @@ -211,8 +216,11 @@ $duefile =~ s/^(.*_printout)_\d+_\d+_\d+ # it contains the names of the files that need to be converted, one per line. # +&debug("Figure file is $figfile"); + if (-e $figfile) { - # print "$figfile exists\n"; + &debug( "Figure file exists"); + &debug("$figfile exists"); 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>; @@ -223,6 +231,7 @@ if (-e $figfile) { print('
'); foreach my $not_eps (@content_of_file) { chomp($not_eps); + &debug( "Being asked to convert $not_eps"); if ($not_eps ne '') { $not_eps=~s|\/\.\/|\/|g; if (!$done_conversion{$not_eps}) { # Only convert multiple includes once. @@ -459,13 +468,16 @@ foreach $texfile (@texfile) { my $pdf_file = $1.'.pdf'; $papera=~s/t/p/; if ($laystyle eq 'album' and $numberofcolumns eq '2') { - $comma = "psnup $papera -2 -s1.0 $new_name_file"; - &busy_wait_command("$comma $tempo_file 1>/dev/null 2>/dev/null", + $comma = "fixps --force ".$new_name_file." | psnup $papera -2 -s1.0 "; + &debug("PSNUP command: $comma"); + &busy_wait_command("$comma 1>$tempo_file 2>/dev/null", "for $status_statement now Modifying PS layout", \%prog_state,$tempo_file); } elsif ($laystyle eq 'book' and $numberofcolumns eq '2') { - $comma = 'pstops '.$papera.' "2:0+1(0.48w,0)"'; - &busy_wait_command("$comma $new_name_file $tempo_file 1>/dev/null 2>/dev/null", + $comma = 'fixps --force '.$new_name_file.' | pstops '.$papera.' "2:0+1(0.48w,0)"'; + &debug("PSTOPS command: $comma "); + + &busy_wait_command("$comma 1>$tempo_file 2>/dev/null", "for $status_statement now Modifying PS layout", \%prog_state,$tempo_file); } else { @@ -492,7 +504,7 @@ foreach $texfile (@texfile) { close(FFHS); $ps_file=$new_ps_file; } - &busy_wait_command("ps2pdf $ps_file $pdf_file 1>/dev/null 2>/dev/null", + &busy_wait_command("ps2pdf13 $ps_file $pdf_file 1>/dev/null 2>/dev/null", "for $status_statement now Converting PS to PDF", \%prog_state,$pdf_file); @@ -846,6 +858,7 @@ sub create_missing_fonts { # sub convert_figure { my ($not_eps) = @_; + &debug("in convert_figure"); my $status_statement='EPS picture for '.$not_eps; my $eps_f = $not_eps; @@ -889,7 +902,24 @@ sub convert_figure { &Apache::lonhtmlcommon::Update_PrgWin('',\%prog_state, 'Converting to EPS '.$prettyname); } - system("convert $not_eps $eps_f"); + # + # If the file is a PDF, need to use pdftops to convert it to a ps file. + # otherwise use imagemagik: + # + if($not_eps =~/\.(pdf|PDF)$/) { + + # + # For whatever reason, pure postscript conversions have to be + # in the same dir as the base file: + # + $eps_f = &basename($eps_f); + $eps_f = $perlvar{'lonPrtDir'}.'/'.$eps_f; + + &debug("Converting pdf $not_eps to postscript: $eps_f"); + system("pdftops $not_eps $eps_f"); + } else { + system("convert $not_eps $eps_f"); + } if (not -e $eps_f) { # converting an animated gif creates either: