Diff for /loncom/interface/printout.pl between versions 1.167 and 1.176

version 1.167, 2020/02/18 23:57:54 version 1.176, 2024/11/01 00:08:03
Line 447  foreach $texfile (@texfile) { Line 447  foreach $texfile (@texfile) {
   $new_name_file =~ s/\.dvi/\.ps/;    $new_name_file =~ s/\.dvi/\.ps/;
 # Explicitly include a switch for papertype, otherwise dvips will default  # Explicitly include a switch for papertype, otherwise dvips will default
 # to whatever is listed first in config.ps (which in most cases is a4).  # to whatever is listed first in config.ps (which in most cases is a4).
 # Historically (since 2004) LON-CAPA printing expected to use the default,    my $papera;
 # i.e., a papertype of a4, when the user selected letter [8 1/2 x 11 in]     unless (($paper eq '') || (($laystyle eq 'album') && ($numberofcolumns eq '1'))) {
 # in the Layout options, so I follow that convention if $papera is letter.          $papera='-t'.$paper;
   my $papera=$paper;    }
   if ($papera eq 'letter') {$papera='a4';}  
   if ($papera ne '') {$papera='-t'.$papera;}  
   my $extra_ps_header = $perlvar{'lonLib'} .'/includepsheader.ps';    my $extra_ps_header = $perlvar{'lonLib'} .'/includepsheader.ps';
   my $comma = "dvips $papera -h $extra_ps_header -Ppdf -G0 -o  $new_name_file";    my $comma = "dvips $papera -h $extra_ps_header -Ppdf -G0 -o  $new_name_file";
   &busy_wait_command("$comma $name_file 1>/dev/null 2>/dev/null",    &busy_wait_command("$comma $name_file 1>/dev/null 2>/dev/null",
Line 507  foreach $texfile (@texfile) { Line 505  foreach $texfile (@texfile) {
       $new_name_file =~ m/^(.*)\./;        $new_name_file =~ m/^(.*)\./;
       my $ps_file = my $tempo_file = $1.'temporar.ps';        my $ps_file = my $tempo_file = $1.'temporar.ps';
       my $pdf_file = $1.'.pdf';        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.  # The code below uses fixps to make pdf include in sequences work.
 #  #
Line 522  foreach $texfile (@texfile) { Line 522  foreach $texfile (@texfile) {
   
       # Use gs to fix the postscript -> level 1.5         # Use gs to fix the postscript -> level 1.5 
       # .. if pdfs were included        # .. if pdfs were included
         #
         # pswrite device was removed from ghostscript 9.09 and later,
         # (ps2write device is used instead).
         # check which device is available, and use as the value
                 # passed via -sDEVICE= arg in gs call to fix the postscript.
         #
   
       if ($pdfs_converted > 0) {        if ($pdfs_converted > 0) {
   $comma = "gs -sDEVICE=pswrite -dLanguageLevel=1.5 ";    my @possdevices = qw(ps2write pswrite);
   &busy_wait_command("$comma -o $tempo_file $new_name_file 2>/dev/null 1>/dev/null",    my $device;
      "for $status_statement now validating PS",    foreach my $poss (@possdevices) {
      \%prog_state, $tempo_file);        if (open(PIPE,"gs -h |grep ' $poss ' 2>&1 |")) {
               my $output = <PIPE>;
             close(PIPE);
             chomp($output);
             if ($output =~ /\Q $poss \E/) {
                 $device = $poss;
             }
         }
         last if ($device ne '');
     }
     if ($device ne '') {
         my ($major,$minor);
         if (open(PIPE,"gs -v |grep 'GPL Ghostscript' 2>&1 |")) {
             my $info = <PIPE>;
             close(PIPE);
             chomp($info);
             if ($info =~ /Ghostscript\s+(\d+)\.(\d+)/) {
                 ($major,$minor) = ($1,$2);
             }
         }
         $comma = "gs -sDEVICE=$device -dLanguageLevel=1.5 ";
         if (($major > 9) || (($major == 9) && ($minor >= 50))) {
             $comma .= '--permit-file-read=* ';
         }
         &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",        if (-e $tempo_file) {
      'File move', \%prog_state, $new_name_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') {        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 (<PIPE>) {
     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");    &debug("PSNUP command: $comma");
   &busy_wait_command("$comma $tempo_file 1>/dev/null 2>/dev/null",    &busy_wait_command("$comma $tempo_file 1>/dev/null 2>/dev/null",
      "for $status_statement now Modifying PS layout",       "for $status_statement now Modifying PS layout",
Line 548  foreach $texfile (@texfile) { Line 600  foreach $texfile (@texfile) {
       } else {        } else {
   $ps_file=$new_name_file;    $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',                                 'tabloid'=>'<< /PageSize [792 1224] >> setpagedevice',
                                'executive'=>,'<< /PageSize [540 720] >> setpagedevice',                                 'executive'=>,'<< /PageSize [540 720] >> setpagedevice',
                                'a2'=>'<< /PageSize [1195.02 1690.09] >> setpagedevice',                                 'a2'=>'<< /PageSize [1195.02 1690.09] >> setpagedevice',
Line 556  foreach $texfile (@texfile) { Line 609  foreach $texfile (@texfile) {
                                'a4'=>'<< /PageSize [595.2 842] >> setpagedevice',                                 'a4'=>'<< /PageSize [595.2 842] >> setpagedevice',
                                'a5'=>'<< /PageSize [421.1 595.2] >> setpagedevice',                                 'a5'=>'<< /PageSize [421.1 595.2] >> setpagedevice',
                                'a6'=>'<< /PageSize [298.75 421.1] >> 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";
   open(FFH,'<',$ps_file) || die "Couldn't open ps file $ps_file for reading: $!\n";        my $new_ps_file='new'.$ps_file;
   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";
   open(FFHS,'>',$new_ps_file) || die "Couldn't open new ps file $new_ps_file for reading: $!\n";        print FFHS $addtoPSfile->{$paper}."\n";
   print FFHS $addtoPSfile->{$paper}."\n";        while (<FFH>) {
   while (<FFH>) {            print FFHS $_;
       print FFHS $_;  
   }  
   close(FFH);  
   close(FFHS);  
   $ps_file=$new_ps_file;    
       }        }
         close(FFH);
         close(FFHS);
         $ps_file=$new_ps_file;  
       &busy_wait_command("ps2pdf13 $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",   "for $status_statement now Converting PS to PDF",
  \%prog_state,$pdf_file);   \%prog_state,$pdf_file);
Line 984  sub convert_figure { Line 1035  sub convert_figure {
  &File::Path::mkpath($path,0,0777);   &File::Path::mkpath($path,0,0777);
  $not_eps =~ s/^\s+//;   $not_eps =~ s/^\s+//;
  $not_eps =~ s/\s+$//;   $not_eps =~ s/\s+$//;
  $not_eps =~ s/ /\\ /g;  
     my $prettyname=$not_eps;      my $prettyname=$not_eps;
  if ($advanced_role) {   if ($advanced_role) {
     $prettyname=~s|$perlvar{'lonDocRoot'}/|/|;      $prettyname=~s|$perlvar{'lonDocRoot'}/|/|;

Removed from v.1.167  
changed lines
  Added in v.1.176


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>