[LON-CAPA-cvs] cvs: loncom /interface lonprintout.pm printout.pl

raeburn raeburn at source.lon-capa.org
Sat Apr 15 17:50:35 EDT 2023


raeburn		Sat Apr 15 21:50:35 2023 EDT

  Modified files:              
    /loncom/interface	printout.pl lonprintout.pm 
  Log:
  - Bug 5899 "printing a pdf file in a course via the printing option"
    - Use -sDEVICE=ps2write arg in call to gs for ghostscript 9.09 or newer.
    - Fix binding operator in call to check if included files contain a pdf.
  
  
Index: loncom/interface/printout.pl
diff -u loncom/interface/printout.pl:1.168 loncom/interface/printout.pl:1.169
--- loncom/interface/printout.pl:1.168	Mon Jan 25 18:06:55 2021
+++ loncom/interface/printout.pl	Sat Apr 15 21:50:34 2023
@@ -1,7 +1,7 @@
 #!/usr/bin/perl
 # CGI-script to run LaTeX, dvips, ps2ps, ps2pdf etc.
 #
-# $Id: printout.pl,v 1.168 2021/01/25 18:06:55 raeburn Exp $
+# $Id: printout.pl,v 1.169 2023/04/15 21:50:34 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -522,16 +522,39 @@
 
 	      # Use gs to fix the postscript -> level 1.5 
 	      # .. 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) {
-		  $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);
-		  
+		  my @possdevices = qw(ps2write pswrite);
+		  my $device;
+		  foreach my $poss (@possdevices) {
+		      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 '') {
+		      $comma = "gs -sDEVICE=$device -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 (-e $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";
Index: loncom/interface/lonprintout.pm
diff -u loncom/interface/lonprintout.pm:1.689 loncom/interface/lonprintout.pm:1.690
--- loncom/interface/lonprintout.pm:1.689	Sat Apr 15 19:33:17 2023
+++ loncom/interface/lonprintout.pm	Sat Apr 15 21:50:34 2023
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Printout
 #
-# $Id: lonprintout.pm,v 1.689 2023/04/15 19:33:17 raeburn Exp $
+# $Id: lonprintout.pm,v 1.690 2023/04/15 21:50:34 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -3906,7 +3906,7 @@
 			$rendered =~ s/\\end\{document}//;
 		    }
 		    $current_output .= $rendered.'\vskip 0.5mm\noindent\makebox[\textwidth/$number_of_columns][b]{\hrulefill}\strut \vskip 0 mm \strut ';
-		} elsif($res_url = ~/\.pdf$/) {
+		} elsif($res_url =~ /\.pdf$/) {
 		    my $url = &Apache::lonnet::clutter($res_url);
 		    my $rendered  = &include_pdf($url);
 		    if ($remove_latex_header ne 'NO') {




More information about the LON-CAPA-cvs mailing list