--- loncom/interface/printout.pl 2024/10/16 17:48:08 1.173 +++ loncom/interface/printout.pl 2024/11/01 00:08:03 1.176 @@ -1,7 +1,7 @@ #!/usr/bin/perl # CGI-script to run LaTeX, dvips, ps2ps, ps2pdf etc. # -# $Id: printout.pl,v 1.173 2024/10/16 17:48:08 raeburn Exp $ +# $Id: printout.pl,v 1.176 2024/11/01 00:08:03 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -448,7 +448,7 @@ foreach $texfile (@texfile) { # Explicitly include a switch for papertype, otherwise dvips will default # to whatever is listed first in config.ps (which in most cases is a4). my $papera; - unless ($paper eq '') { + unless (($paper eq '') || (($laystyle eq 'album') && ($numberofcolumns eq '1'))) { $papera='-t'.$paper; } my $extra_ps_header = $perlvar{'lonLib'} .'/includepsheader.ps'; @@ -505,7 +505,9 @@ foreach $texfile (@texfile) { $new_name_file =~ m/^(.*)\./; my $ps_file = my $tempo_file = $1.'temporar.ps'; my $pdf_file = $1.'.pdf'; - $papera=~s/t/p/; + unless ($paper eq '') { + $papera='-p'.$paper; + } #---- # The code below uses fixps to make pdf include in sequences work. # @@ -567,7 +569,24 @@ foreach $texfile (@texfile) { } } if ($laystyle eq 'album' and $numberofcolumns eq '2') { - $comma = "psnup $papera -2 -s1.0 $new_name_file"; + my $canscale; + if (open(PIPE,"psnup --version 2>&1 |")) { + while () { + chomp(); + if (/^psnup\s+release\s+(\d+)/) { + if ($1 < 2) { + $canscale = 1; + } + last; + } + } + close(PIPE); + } + if ($canscale) { + $comma = "psnup $papera -2 -s1.0 $new_name_file"; + } else { + $comma = "psnup $papera -2 $new_name_file"; + } &debug("PSNUP command: $comma"); &busy_wait_command("$comma $tempo_file 1>/dev/null 2>/dev/null", "for $status_statement now Modifying PS layout", @@ -581,7 +600,8 @@ foreach $texfile (@texfile) { } else { $ps_file=$new_name_file; } - my $addtoPSfile={'legal'=>'<< /PageSize [612 1008] >> setpagedevice', + my $addtoPSfile={'letter'=>'<< /PageSize [612 792] >> setpagedevice', + 'legal'=>'<< /PageSize [612 1008] >> setpagedevice', 'tabloid'=>'<< /PageSize [792 1224] >> setpagedevice', 'executive'=>,'<< /PageSize [540 720] >> setpagedevice', 'a2'=>'<< /PageSize [1195.02 1690.09] >> setpagedevice', @@ -589,19 +609,17 @@ foreach $texfile (@texfile) { 'a4'=>'<< /PageSize [595.2 842] >> setpagedevice', 'a5'=>'<< /PageSize [421.1 595.2] >> setpagedevice', 'a6'=>'<< /PageSize [298.75 421.1] >> setpagedevice', - }; - if ($paper ne 'letter') { - open(FFH,'<',$ps_file) || die "Couldn't open ps file $ps_file for reading: $!\n"; - my $new_ps_file='new'.$ps_file; - open(FFHS,'>',$new_ps_file) || die "Couldn't open new ps file $new_ps_file for reading: $!\n"; - print FFHS $addtoPSfile->{$paper}."\n"; - while () { - print FFHS $_; - } - close(FFH); - close(FFHS); - $ps_file=$new_ps_file; + }; + open(FFH,'<',$ps_file) || die "Couldn't open ps file $ps_file for reading: $!\n"; + my $new_ps_file='new'.$ps_file; + open(FFHS,'>',$new_ps_file) || die "Couldn't open new ps file $new_ps_file for reading: $!\n"; + print FFHS $addtoPSfile->{$paper}."\n"; + while () { + print FFHS $_; } + close(FFH); + close(FFHS); + $ps_file=$new_ps_file; &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);