#!/usr/local/bin/perl use strict; use vars qw/$libdir $license $storage $temp $PHP/; BEGIN { ### CONFIGURATION $libdir='/usr/local/lib/pdflib'; $license='/usr/local/lib/pdflib/licensekeys.txt'; $storage='/work/lelik_all/lelik/phys-encyclopedia.net'; $temp='/work/lelik_all/lelik/phys-encyclopedia.net/temp'; # PHP exec string. php must be php-cli !!! $PHP ='/usr/local/php4/bin/php -q /work/vetal/static/client2/base.php'; ### /CONFIGURATION unshift(@INC,$libdir); } use pdflib_pl 6.0; my $p = PDF_new(); PDF_set_parameter($p, "licensefile", $license); PDF_set_parameter($p, "compatibility", '1.3'); my ($dir,$file)=split/:/,$ENV{'QUERY_STRING'}; if(!$dir or !$file or $dir=~/\D/ or $file=~/[^0-9a-zA-Z_\-]/){ print "Content-type:text/html\n\nParameters error"; exit; } if (PDF_begin_document($p, "$temp/$$.$file.pdf", "") == -1){ print "Content-type:text/html\n\n"; printf ("File error: %s\n", PDF_get_errmsg($p)); exit; } #PDF_set_parameter($p, "SearchPath", $storage); PDF_set_parameter($p, "hypertextencoding", "winansi"); PDF_set_info($p, "Creator", "phys-encyclopedia.net"); PDF_set_info($p, "Author", "phys-encyclopedia.net"); PDF_set_info($p, "Title", "Physics Encyclopedia. Vol $dir - Page $file"); $file=sprintf("%03d",$file) if $file!~/\D/; my $blockcontainer = PDF_open_pdi($p, "/$storage/vol_$dir/$file.pdf", "", 0); if ($blockcontainer == -1){ print "Content-type:text/html\n\n"; printf ("Container error: %s\n", PDF_get_errmsg($p)); exit; } my $page = PDF_open_pdi_page($p, $blockcontainer, 1, ""); if ($page == -1){ print "Content-type:text/html\n\n"; printf ("Page error: %s\n", PDF_get_errmsg($p)); exit; } my $width = PDF_get_pdi_value($p, "width", $blockcontainer, $page, 0); my $height = PDF_get_pdi_value($p, "height", $blockcontainer, $page, 0); PDF_begin_page_ext($p, $width, $height, ""); PDF_fit_pdi_page($p, $page, 0, 0, "adjustpage"); my $font = PDF_load_font($p, "Helvetica-Bold", "winansi", ""); PDF_setfont($p, $font, 8); PDF_set_border_style($p, 'solid', 0); open(F,"$PHP|"); my $data = join('',); close(F); my %linkz = ($data=~m#(.+?)#gis); my $line=0; my $keywd=''; my $subj=''; for my $url (keys %linkz){ # PDF_set_text_pos($p, 24, $height-($line+24)); # PDF_show($p, $linkz{$url}); # my $strwidth = PDF_stringwidth($p, $linkz{$url}, $font, 10); # PDF_add_weblink($p, 24, $height-($line+24), 24+$strwidth, $height-($line+10), $url); # $line+=14; PDF_set_text_pos($p, 1, $line+1); PDF_show($p, $linkz{$url}); my $strwidth = PDF_stringwidth($p, $linkz{$url}, $font, 8); PDF_add_weblink($p, 1, $line+1, 1+$strwidth, $line+10, $url); $subj=$linkz{$url}; $keywd.=' '.$linkz{$url}; $line+=8; } PDF_end_page_ext($p, ""); PDF_close_pdi_page($p, $page); PDF_end_document($p, ""); PDF_close_pdi($p, $blockcontainer); PDF_delete($p); my $len = -s "$temp/$$.$file.pdf"; if(!$len or !open(F,"$temp/$$.$file.pdf")){ print "Content-type:text/html\n\nCan't open file"; exit; } $|=1; print "Content-type: application/pdf\n"; print "Content-Length: $len\n"; print "Content-Disposition: inline; filename=$file.pdf\n\n"; binmode(F); binmode(STDOUT); read(F,my $out,$len); close(F); unlink "$temp/$$.$file.pdf"; $keywd=~s/[^a-zA-Z0-9 ]//gis; $subj=~s/[^a-zA-Z0-9 ]//gis; $keywd=~s/\r|\n//gis; $subj=~s/\r|\n//gis; if(length($keywd) >= 128){ $keywd=substr($keywd,0,128); $keywd=~s/\s[^ ]+?$//; } if(length($subj) >= 64){ $subj=substr($subj,0,64); $subj=~s/\s[^ ]+?$//; } my $rewrite="Producer (maxtext2pdf rawconverter 0.0.4 alp \\(LISP addv1\@FreeBSD\\))".chr(10). "/Keywords ($keywd)".chr(10). "/Subject ($subj)"; $out=~s/Producer \(PDFlib Personalization Server 6\.0\.2 \\\(Perl 5\.8\.0\/FreeBSD\\\)\)/$rewrite/; my($s,$m,$h,$d,$mon,$year)=(localtime(time()-345600)); $mon++; $year+=1900; my $date=sprintf("%04d%02d%02d%02d%02d%02d-05'00'",$year, $mon, $d, $h, $m, $s); $out=~s#/CreationDate \(D:.+?\)#/CreationDate (D:$date)#; print $out; exit;