version 1.114, 2006/12/04 21:44:42
|
version 1.116, 2006/12/07 22:12:19
|
Line 530 foreach $texfile (@texfile) {
|
Line 530 foreach $texfile (@texfile) {
|
&busy_wait_command("$comma $name_file 1>dev/null 2>/dev/null", |
&busy_wait_command("$comma $name_file 1>dev/null 2>/dev/null", |
"for $status_statement dvips to repaginate", |
"for $status_statement dvips to repaginate", |
\%prog_state, $new_name_file); |
\%prog_state, $new_name_file); |
|
# |
|
# One last little hinky kinky thing. |
|
# It's just possible that some fonts could not be maded |
|
# at the resolution of the pdf print driver. |
|
# In that case a file called missfont.log will have been |
|
# created that will contain the commands that were attempted |
|
# to create the missing fonts. If we basically |
|
# take all the 8000 strings in that file, and |
|
# replace them with 600 (the ljfour resolution) |
|
# run the commands in that file and redvips, |
|
# we'll be able to print the missing glyphs at 600dpi. |
|
# |
|
# Supposedly it is possible to tune TeX/Metafont to do this |
|
# right but I failed to get that to work when following the |
|
# docs at the tug site, hence this rather kludgey fix. |
|
# |
|
# We make the (I think) reasonable assumption that |
|
# missing glyphs won't change the pagination and I think |
|
# this is true because TeX/dvips will leave a space |
|
# instead of these glyphs based on the font metrics |
|
# (fancy way to say there will be a blank the size of the missing |
|
# glyphs). |
|
# |
|
my $print_directory = dirname($name_file); |
|
my $missfonts_file = $print_directory."/missfont.log"; |
|
#print("<br /> Missing fonts file is: $missfonts_file"); |
|
if (-e $missfonts_file) { |
|
#print("<br />Missing fonts file exists\n"); |
|
&create_missing_fonts($missfonts_file); |
|
unlink($missfonts_file, \%prog_state); |
|
&busy_wait_command("$comma $name_file 1>dev/null 2>/dev/null", |
|
"for $status_statement dvips generated missing fonts", |
|
\%prog_state, $new_name_file); |
|
} |
|
|
|
# |
print "\n<h1>PDF output file (see link below)</h1>\n"; |
print "\n<h1>PDF output file (see link below)</h1>\n"; |
$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'; |
Line 603 foreach $texfile (@texfile) {
|
Line 639 foreach $texfile (@texfile) {
|
&busy_wait_command("$comma $name_file 1>/dev/null 2>/dev/null", |
&busy_wait_command("$comma $name_file 1>/dev/null 2>/dev/null", |
"for $status_statement now Converting to PS", |
"for $status_statement now Converting to PS", |
\%prog_state,$new_name_file); |
\%prog_state,$new_name_file); |
|
# |
|
# One last little hinky kinky thing. |
|
# It's just possible that some fonts could not be maded |
|
# at the resolution of the pdf print driver. |
|
# In that case a file called missfont.log will have been |
|
# created that will contain the commands that were attempted |
|
# to create the missing fonts. If we basically |
|
# take all the 8000 strings in that file, and |
|
# replace them with 600 (the ljfour resolution) |
|
# run the commands in that file and redvips, |
|
# we'll be able to print the missing glyphs at 600dpi. |
|
# |
|
# Supposedly it is possible to tune TeX/Metafont to do this |
|
# right but I failed to get that to work when following the |
|
# docs at the tug site, hence this rather kludgey fix. |
|
# |
|
# We make the (I think) reasonable assumption that |
|
# missing glyphs won't change the pagination and I think |
|
# this is true because TeX/dvips will leave a space |
|
# instead of these glyphs based on the font metrics |
|
# (fancy way to say there will be a blank the size of the missing |
|
# glyphs). |
|
# |
|
my $print_directory = dirname($name_file); |
|
my $missfonts_file = $print_directory."/missfont.log"; |
|
#print("<br /> Missing fonts file is: $missfonts_file"); |
|
if (-e $missfonts_file) { |
|
#print("<br />Missing fonts file exists\n"); |
|
&create_missing_fonts($missfonts_file); |
|
unlink($missfonts_file, \%prog_state); |
|
&busy_wait_command("$comma $name_file 1>dev/null 2>/dev/null", |
|
"for $status_statement dvips generated missing fonts", |
|
\%prog_state, $new_name_file); |
|
} |
if (-e $new_name_file) { |
if (-e $new_name_file) { |
my $latex_file = $name_file; |
my $latex_file = $name_file; |
$latex_file =~ s/\.dvi/\.tex/; |
$latex_file =~ s/\.dvi/\.tex/; |
Line 631 foreach $texfile (@texfile) {
|
Line 701 foreach $texfile (@texfile) {
|
&busy_wait_command("$comma $name_file 1>/dev/null 2>/dev/null", |
&busy_wait_command("$comma $name_file 1>/dev/null 2>/dev/null", |
"for $status_statement dvips to repaginate", |
"for $status_statement dvips to repaginate", |
\%prog_state, $new_name_file); |
\%prog_state, $new_name_file); |
|
|
print "<br />"; |
print "<br />"; |
$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'; |
Line 873 sub repaginate {
|
Line 944 sub repaginate {
|
|
|
} |
} |
|
|
|
# |
|
# Create missing fonts given a latex missfonts.log file. |
|
# This file will have lines like: |
|
# |
|
# mktexpk --mfmode ljfour --bdpi 8000 --mag 1+0/8000 --dpi 8000 tcrm0500 |
|
# |
|
# We want to execute those lines with the 8000's changed to 600's |
|
# in order to match the resolution of the ljfour printer. |
|
# Of course if some wiseguy has changed the default printer from ljfour |
|
# in the dvips's config.ps file that will break so we'll also |
|
# ensure that --mfmode is ljfour. |
|
# |
|
sub create_missing_fonts { |
|
my ($fontfile, $state) = @_; |
|
|
|
# Open and read in the font file..we'll read it into the array |
|
# font_commands. |
|
# |
|
my $font_handle = IO::File->new($fontfile); |
|
my @font_commands = <$font_handle>; |
|
|
|
|
|
# Now process each command replacing the appropriate 8000's with |
|
# 600's ensuring that font names with 8000's in them are not corrupted. |
|
# and if the --mfmode is not ljfour we turn it into ljfour. |
|
# Then we execute the command. |
|
# |
|
|
|
foreach my $command (@font_commands) { |
|
#print("<br />Raw command: $command"); |
|
$command =~ s/ 8000/ 600/g; # dpi directives. |
|
$command =~ s/\/8000/\/600/g; # mag directives. |
|
#print("<br />After dpi replacements: $command"); |
|
|
|
my @cmdarray = split(/ /,$command); |
|
for (my $i =0; $i < scalar(@cmdarray); $i++) { |
|
if ($cmdarray[$i] eq '--mfmode') { |
|
$cmdarray[$i+1] = "ljfour"; |
|
} |
|
} |
|
#print("<br /> before reassembly : (@cmdarray)"); |
|
$command = join(" ", (@cmdarray)); |
|
|
|
#print("<br />Creating fonts via command: $command"); |
|
&busy_wait_command("$command 1>dev/null 2>/dev/null", |
|
"Creating missing font", |
|
$state, $command); |
|
|
|
} |
|
|
|
} |