[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