# # fix_print_html.lib # # Dan Scott / # Ferg / # # Used to prepare single-file HTML variant for PDF/Postscript creation # thru htmldoc. # # log: # 16Oct2000 - initial entry # 03Apr2001 - fix for # # sub fix_print_html { my($in,$out,$ttl) = @_; open(IN_FILE, "< $in") || do { print "fix_print_html: cannot open $in: $!\n"; return 0; }; my($buf,$ttl_buf) = ''; my($indx) = -1; my($is_article) = 0; while() { if( $indx == 1 ) { # ignore everything until we see the chapter or sect # if( $_ =~ /CLASS="CHAP/i || $_ =~ /CLASS="PREF/i ) { $buf .= $_; $indx++; } elsif( $_ =~ /CLASS="SECT/ || $_ =~ /CLASS="sect/ ) { $buf .= $_; $indx++; $is_article = 1; } else { next; } } elsif( $indx == 0 ) { # write out the title page file # if( $_ =~ /CLASS="TOC"/ ) { $ttl_buf .= ">\n\n\n"; $ttl_buf =~ s/<\/H1\n/<\/H1\n>


$ttl") || do { print "fix_print_html: cannot open $ttl: $!\n"; close(IN_FILE); return 0; }; print TOC_FILE $ttl_buf; close(TOC_FILE); $ttl_buf = ''; $indx++; } else { $ttl_buf .= $_; } } elsif( $indx < 0 ) { # up to this point, both buffers get the line # if( $_ =~ /CLASS="TITLEPAGE"/ ) { $ttl_buf .= $_ . ">\n

\n



\n<\/P\n"; $indx++; } else { $buf .= $_; $ttl_buf .= $_; } } else { $buf .= $_; } } close(IN_FILE); open(OUT_FILE, "> $out") || do { print "fix_print_html: cannot open $out: $!\n"; return 0; }; # make these corrections and write out the file # $buf =~ s/(\n>/$1$2\n/gms; $buf =~ s/(\n>/$1$2\n/gms; $buf =~ s/(\n>/$1$2\n/gms; if( $is_article == 0 ) { $buf =~ s/(\nCLASS="SECT[TION\d]+"\n>)


) -1 ) { $buf = substr($buf, 0, $indx); $buf .= "\n<\/BODY>\n<\/HTML>\n\n"; } elsif( ($indx = rindex($buf, " -1 ) { $buf = substr($buf, 0, $indx); $buf .= "\n<\/BODY>\n<\/HTML>\n\n"; } $buf =~ s/\&\#13;//g; $buf =~ s/\&\#60;/\</g; $buf =~ s/\&\#62;/\>/g; $buf =~ s/\&\#8211;/\-/g; $buf =~ s/WIDTH=\"\d\"//g; $buf =~ s/><[\/]*TBODY//g; $buf =~ s/><[\/]*THEAD//g; $buf =~ s/TYPE=\"1\"\n//gim; if( $is_article == 0 ) { # for books...decrement the headers by 1 and then re-set the # chapter level only to H1... # my($cnt,$j) = 0; for($cnt=5; $cnt > 0; $cnt--) { $j = $cnt + 1; $buf =~ s/<\/DIV\n//gms; $buf =~ s/(>(<\/LI\n)/$1$2$3/gms; print OUT_FILE $buf; close(OUT_FILE); return 1; } # Return true from package include # 1;