--- loncom/interface/printout.pl 2014/02/13 17:47:30 1.146.4.3 +++ loncom/interface/printout.pl 2011/05/18 11:26:44 1.149 @@ -1,7 +1,7 @@ #!/usr/bin/perl # CGI-script to run LaTeX, dvips, ps2ps, ps2pdf etc. # -# $Id: printout.pl,v 1.146.4.3 2014/02/13 17:47:30 raeburn Exp $ +# $Id: printout.pl,v 1.149 2011/05/18 11:26:44 foxr Exp $ # # Copyright Michigan State University Board of Trustees # @@ -44,7 +44,7 @@ use LONCAPA::Configuration; use strict; my $busy_wait_timeout = 30; - +my $pdfs_converted = 0; # non zero if PDF includes (need to fixps). my $debugging = 0; @@ -127,8 +127,8 @@ sub send_error_mail { # Todo: Convert badurl into a url from file path: - my $subject = "Error [$badurl] Print failed for $user".':'.$domain; - my $message .= "Print failed to render LaTeX for $user".':'."$domain\n"; + my $subject = "Error [$badurl] Print failed for $user".'@'.$domain; + my $message .= "Print failed to render LaTeX for $user".'@'."$domain\n"; $message .= " User was attempting to print: \n"; foreach my $resource (split(/:/,$resources)) { $message .= " $resource\n"; @@ -308,23 +308,14 @@ foreach $texfile (@texfile) { my $name; my $name_range=''; - # $name -> Either user's full name or username:domain - # $name_range -> Either user's last name or username. + # $name -> Either user's full name or username@domain + # $name_range -> Either user's last name or usrname. if ($tempo_array[3]) { $name=$tempo_array[3]; - $name =~ s{^\s+|\s+$}{}g; - if ($name =~ /,/) { - ($name_range) = split(/,/,$name, 2); - } elsif ($name =~ /\s/) { - $name_range = $name; - $name_range =~ s/\s+/_/; - } else { - $name_range = $name; - } - $name_range =~ s/[^\w\:\-]+//g; + ($name_range) = split(/,/,$name, 2); } else { - $name=$tempo_array[0].':'.$tempo_array[1]; + $name=$tempo_array[0].'@'.$tempo_array[1]; $name_range = $tempo_array[0]; } @@ -332,7 +323,7 @@ foreach $texfile (@texfile) { # user is getting printed. # - if (($name ne "") && ($name ne ':') ) { # Could be printing codes... + if (($name ne "") && ($name ne '@') ) { # Could be printing codes... $link_text=''.$name.''; $status_statement.=$name; } @@ -345,23 +336,13 @@ foreach $texfile (@texfile) { @tempo_array=split(/:/,$stud_info[-1]); if ($tempo_array[3]) { $name=$tempo_array[3]; - $name =~ s{^\s+|\s+$}{}g; - my $lastname; - if ($name =~ /,/) { - ($lastname) = split(/,/, $name,2); - } elsif ($name =~ /\s/) { - $lastname = $name; - $lastname =~ s/\s+/_/; - } else { - $lastname = $name; - } - $name_range .= "-".$lastname; - $name_range =~ s/[^\w\:\-]+//g; + my ($lastname) = split(/,/, $name,2); + $name_range .= "-".$lastname; } else { - $name=$tempo_array[0].':'.$tempo_array[1]; + $name=$tempo_array[0].'@'.$tempo_array[1]; $name_range .= '-'.$tempo_array[0]; } - if (($name ne "") && ($name ne ':')) { + if (($name ne "") && ($name ne '@')) { $link_text.=' - '.$name.''; $status_statement.=' - '.$name; @@ -496,6 +477,31 @@ foreach $texfile (@texfile) { my $ps_file = my $tempo_file = $1.'temporar.ps'; my $pdf_file = $1.'.pdf'; $papera=~s/t/p/; +#---- +# The code below uses fixps to make pdf include in sequences work. +# +# $comma = "fixps --force $new_name_file"; +# &debug("FIXPS command: $comma"); +# &busy_wait_command("$comma 1>$tempo_file 2>/dev/null", +# "for $status_statement now validating PS", +# \%prog_state,$tempo_file); + +#--- +# The code below uses gs to make pdf includes in sequences work + + # Use gs to fix the postscript -> level 1.5 + # .. if pdfs were included + + if ($pdfs_converted > 0) { + $comma = "gs -sDEVICE=pswrite -dLanguageLevel=1.5 "; + &busy_wait_command("$comma -o $tempo_file $new_name_file 2>/dev/null 1>/dev/null", + "for $status_statement now validating PS", + \%prog_state, $tempo_file); + +#--- + &busy_wait_command("mv $tempo_file $new_name_file", + 'File move', \%prog_state, $new_name_file); + } if ($laystyle eq 'album' and $numberofcolumns eq '2') { $comma = "psnup $papera -2 -s1.0 $new_name_file"; &debug("PSNUP command: $comma"); @@ -923,7 +929,7 @@ sub convert_figure { $not_eps =~ s/^\s+//; $not_eps =~ s/\s+$//; $not_eps =~ s/ /\\ /g; - my $prettyname=$not_eps; + my $prettyname=$not_eps; if ($advanced_role) { $prettyname=~s|/home/([^/]+)/public_html|/priv/$1|; $prettyname=~s|$perlvar{'lonDocRoot'}/|/|; @@ -945,14 +951,16 @@ sub convert_figure { &debug("Converting pdf $not_eps to postscript: $eps_f"); system("pdftops $not_eps $eps_f"); + $pdfs_converted++; # Need to fix ps in last pass. } else { system("convert $not_eps $eps_f"); - if ($? and $advanced_role) { - print '

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

'; - } + if($? and $advanced_role){ + print "

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

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