#!/usr/bin/perl
use IO::File;
use Image::Magick;
print "Content-type: text/html\n\n";
print "<body bgcolor=\"#FFFFFF\">\n";
my ($texfile,$laystyle,$numberofcolumns,$selectionmade) = split(/&/,$ENV{'QUERY_STRING'});
my $figfile = $texfile;
$figfile =~ s/^([^\.]+printout)[^t]+\.tex/$1\.dat/;
my $duefile = $texfile;
$duefile =~ s/^([^\.]+printout)[^t]+\.tex/$1\.due/;
#do we have figures?
if (-e $figfile) {
my $temporary_file=IO::File->new($figfile) || die "Couldn't open file for reading: $!\n";
my @content_of_file = <$temporary_file>;
close $temporary_file;
my $noteps;
foreach $not_eps (@content_of_file) {
if ($not_eps ne '') {
my $eps_f = $not_eps;
$eps_f =~ s/\.[^.]*$/\.eps/i;
$_ = $eps_f;
m/\/([^\/]+)$/;
$eps_f = '/home/httpd/prtspool/'.$1;
my $image = Image::Magick->new;
$not_eps =~ s/^\s+//;
$not_eps =~ s/\s+$//;
$status = $image->Read($not_eps);
if ($status) {print " $status ";}
$image->Set(page => '+100+200');
$status = $image->Write($eps_f);
if ($status) {print " $status ";}
#check is eps exist in prtspool
if(not -e $eps_f) {
for (my $i=0;$i<10000;$i++) {
if (-e $eps_f.'.'.$i) {
rename $eps_f.'.'.$i, $eps_f;
last;
}
}
}
}
}
unlink $figfile;
}
#print "$texfile\n"; #name of the tex file for debugging only
$texfile =~ m/^(.*)\/([^\/]+)$/;
my $name_file = $2;
my $path_file = $1.'/';
chdir $path_file;
system("latex $name_file 1>/dev/null 2>/dev/null");
#Do we have a latex error in the log file?
my $logfilename = $texfile;
$logfilename =~ s/\.tex$/\.log/;
my $temporary_file=IO::File->new($logfilename) || die "Couldn't open file for reading: $!\n";
my @content_of_file = <$temporary_file>;
close $temporary_file;
my $body_log_file = join(' ',@content_of_file);
if ($body_log_file=~m/!\s+Emergency stop/) {
#LaTeX failed to parse tex file
print "<h2>LaTeX could not successfully parse your tex file.</h2>";
print "It probably has errors in it.<br />";
my $whereitbegins = rindex $body_log_file,'STAMPOFPASSEDRESOURCESTART';
my $whereitends = rindex $body_log_file,'STAMPOFPASSEDRESOURCEEND';
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 "Here are the error messages in the LaTeX log file</br><br />";
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/^!/) {
$sygnal = 1;
}
if ($content_of_file[$i]=~m/Here is how much of/) {
$sygnal = 0;
}
if ($sygnal) {
print "$content_of_file[$i]<br />";
}
}
} else {
#LaTeX successfully parsed tex file
$name_file =~ s/\.tex/\.dvi/;
my $new_name_file = $name_file;
$new_name_file =~ s/\.dvi/\.ps/;
my $comma = "dvips -Ppdf -G0 -o $new_name_file";
system("$comma $name_file 1>/dev/null 2>/dev/null");
if (-e $new_name_file) {
print "<h1><h1>Successfully created PDF output file (see link below)</h1>\n";
$new_name_file =~ m/^(.*)\./;
my $tempo_file = $1.'temporar.ps';
my $name_file = $1.'.pdf';
if ($laystyle eq 'album' and $numberofcolumns eq '2') {
$comma = "psnup -2 -s1.0 $new_name_file";
system("$comma $tempo_file 1>/dev/null 2>/dev/null");
system("ps2pdf $tempo_file $name_file 1>/dev/null 2>/dev/null");
} elsif ($laystyle eq 'book' and $numberofcolumns eq '2') {
$comma = 'pstops -pletter "2:0+1(0.48w,0)"';
system("$comma $new_name_file $tempo_file 1>/dev/null 2>/dev/null");
system("ps2pdf $tempo_file $name_file 1>/dev/null 2>/dev/null");
} else {
system("ps2pdf $new_name_file $name_file 1>/dev/null 2>/dev/null");
}
my $texlog = $texfile;
my $texaux = $texfile;
my $texdvi = $texfile;
my $texps = $texfile;
$texlog =~ s/\.tex/\.log/;
$texaux =~ s/\.tex/\.aux/;
$texdvi =~ s/\.tex/\.dvi/;
$texps =~ s/\.tex/\.ps/;
my @garb = ($texlog,$texaux,$texdvi,$texps);
# unlink @garb;
unlink $duefile;
print "<a href=\"/prtspool/$name_file\">Your PDF document</a>";
print "\n";
}
}
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>