Never mind, I went the CUPS way and all is fine now. Its hard with out documentations.. my previous admin should have done that
Best, vinay. --- In [email protected], "vinay" <[EMAIL PROTECTED]> wrote: > > Hi Folks, > > I have a big problem here. I am fairly new to writing print filters so > I am trying to use the one my previous admin had written. A web > application deployed on the linux server uses the details given by > this filter to display the values on the web page. While it was > working on the older machine, I just wanted to transfer entire setup > to a better machine and did so. What I observed is, in the printcap > file, if I remove the line related to the filter, I can do the remote > printing else the filter somehow is failing to do its job and thus the > jobs are not getting listed in lpq as well as web interface. But since > we need this filter to display the values, deleting the line is not an > option. Here is the printcap file: > > ##LPRNGTOOL## REMOTE > lj1200 > :sd=/var/spool/lpd/lj1200 > :sh > :mx=0 > :af=/var/spool/lpd/lj1200/acct > :ml=0 > :lf=/var/spool/lpd/lj1200/log > :cd=/var/spool/lpd/lj1200/ > :filter=/var/spool/lpd/filter.pl > :[EMAIL PROTECTED] > :server > : > > ##LPRNGTOOL## LOCAL > lpx > :sd=/var/spool/lpd/lpx > :sh > :mx=0 > :af=/var/spool/lpd/lpx/acct > :ml=0 > :lf=/var/spool/lpd/lpx/log > :cd=/var/spool/lpd/lpx/ > :lp=/dev/usb/lp0 > : > > > > > > > > And here is the filter.pl that the previous admin wrote: > > > > #!/usr/bin/perl > > # HISTORY > > # Feb 2005: > # - Changed table scheme for the FLMCSS system > # > # April 2003: > # - Added support for pdf files format > # - Added support to handle layouts (2 pages per sheet) reduction > > use strict; > use Getopt::Std; > use POSIX; > use DBI; > > # -------------------------- CONSTANTS ------------------------------- > # Script exit status values > my($RET_JSUCC, $RET_JFAIL, $RET_JABORT, $RET_JREMOVE, $RET_JHOLD); > $RET_JSUCC = 0; > $RET_JFAIL = 1; > $RET_JABORT = 2; > $RET_JREMOVE = 3; > $RET_JHOLD = 6; > > # MySQL connection info > my $serverName = "127.0.0.1"; > my $serverPort = "3306"; > my $serverUser = "flmc"; > my $serverPass = "flmc579"; > my $serverDb = "flmcDS"; > my $serverTabl = "printjob"; > > # Misc > my $CANNOT_PRINT_TITLE="CANNOT PRINT THIS FILE: "; > my $SUBMIT2DB = 1; > my $ECONOMODE = "OFF"; > > # -------------------------- GLOBAL VARS ----------------------------- > my(%args); > > # Get the parameters passed by lpd and they are the following: > # -D = date and time > # -J = job name > # -H = host name > # -e = data file name > # -d = path to the spool > # -n = user name > # -j = job id > # -k = config file name > > #print STDERR "ARGUMENTS: "; > #foreach my $item (@ARGV) { > # print STDERR "$item, "; > #} > > getopts('A:B:C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q:R:S:T:U:V:W:X:Y:Z:' > . 'a:b:cd:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:y:z:',\%args); > > #DEBUG the parameters > #foreach my $item (keys(%args)) { > #print STDERR "[$item] = ".$args{"$item"}."\n"; > #} > > # ------------------------ FUNCTION SECTION --------------------------- > sub exitWithError($) { > print STDERR "$_[0]"; > exit $RET_JREMOVE; > } > > # Prints a PCL control header for printjob. > # The parameter is whether you want HQ or not (0, 1) > sub printPclHeader() { > print STDOUT "[EMAIL PROTECTED] [EMAIL PROTECTED] SET RESOLUTION = > [EMAIL PROTECTED] SET ECONOMODE = "; > print STDOUT "$ECONOMODE\n"; > print STDOUT "[EMAIL PROTECTED] ENTER LANGUAGE = POSTSCRIPT\n"; > } > > sub printPclTrailer { > print STDOUT "[EMAIL PROTECTED] [EMAIL PROTECTED] ECHO EOJ"; > } > > sub getNumPagesFromPS() { > my($ipages, $icopies); > my($sline); > $ipages=0; > $icopies=1; > # DEBUG print("Opening $_[0]\n"); > # open(IFILE, "< $_[0]") || exitWithError("Counld not open datafile: > $_[0], $!"); > > my $isps = 0; > my $isps_with_pcl = 0; > my $counter = 1; > my $igroups = 0; > my $icurpage = 1; > my $iwin98_copies = 0; > > $sline = <STDIN>; > if ($sline =~ /^\%\!PS-Adobe-*/) { # It's pure POSTSCRIPT. It needs > header > printPclHeader(); > print STDOUT $sline; > $isps = 1; > } > elsif ($sline =~ /[EMAIL PROTECTED] JOB/) { # It's in PCL format > print STDOUT $sline; > while (($sline = <STDIN>) && ($sline =~ /[EMAIL PROTECTED]/)) { > if ($sline =~ /ECONOMODE/) { > print STDOUT "[EMAIL PROTECTED] SET ECONOMODE = > $ECONOMODE\n"; > } > else { > print STDOUT $sline; > } > if ($sline =~ /POSTSCRIPT/) { > $isps_with_pcl = 1; > } > } > if ($isps_with_pcl == 0) { > exitWithError("Cannot print nonPostscript file"); > } > } > else { # Non postscript and non PCL... > exitWithError("Undeterminable format, print failed"); > } > > # DEBUG print("The count is $counter\n"); > > LOOP_FINDSETUP: while ($sline = <STDIN>) { > print STDOUT $sline; > last LOOP_FINDSETUP if ($sline =~ /^\%\%BeginSetup/); # > Freaking > weird syntax... > } > > LOOP_FINDCOPIES: while ($sline = <STDIN>) { > print STDOUT $sline; > if ($sline =~ /(\/\#copies|NumCopies) (\d+)/) { > $icopies = $2 if ($2 > $icopies); > } > last LOOP_FINDCOPIES if ($sline =~ /^\%\%EndSetup/); > } > > LOOP_FINDGROUP: while ($sline = <STDIN>) { > print STDOUT $sline; > if ($sline =~ /^\%\%Page: (\d+)/) { > $icurpage = $1; > LOOP_BEGINPAGESETUP: while ($sline = <STDIN>) { > print STDOUT $sline; > last LOOP_BEGINPAGESETUP if ($sline =~ > /^\%\%BeginPageSetup/); > } > > LOOP_PAGESETUP: while ($sline = <STDIN>) { > print STDOUT $sline; > # Keep track of a damn copies flag for single page for win98 postscript > if ($sline =~ /^\[\{(\d+)/) { > sleep 5; > $iwin98_copies = -1 * $1; > } > if ($sline =~ /#copies/) { > sleep 5; > $iwin98_copies = -1 * $iwin98_copies; > } > last LOOP_FINDGROUP if ($igroups == 0 && > $icurpage != 1); # Stop > looking for group info > if ($sline =~ /startnup/) { > if ($icurpage == 1) { > $igroups = 1; # Mark > the beginning of the group count > } > else { > $igroups = $icurpage - > $igroups; # Get the groups per page > last LOOP_FINDGROUP; > } > } > last LOOP_PAGESETUP if ($sline =~ > /^\%\%EndPageSetup/); > } > } > } > > LOOP_FINDTRAILER: while ($sline = <STDIN>) { > print STDOUT $sline; > if ($sline =~ /^\%\%Page: (\d+)/) { > $icurpage = $1; > } > last LOOP_FINDTRAILER if ($sline =~ /^\%\%Trailer/); > } > > LOOP_FINDAPAGES: while ($sline = <STDIN>) { > print STDOUT $sline; > if ($sline =~ /^\%\%Pages: (\d+)/) { > $ipages = $1; > } > } > > if ($isps == 1) { # For pure PostScript, print the PCL Trailer > printPclTrailer(); > } > > $ipages = $icurpage unless ($ipages != 0); # If there is no Pages: > keyword then use the last page number > if ($igroups == 0) { > $igroups = 1; > } > elsif ($igroups == 1) { > $igroups = $icurpage; > } > > if ($ipages == 1 && $iwin98_copies > 0) { # Handle win98 1 page > multiple copies problem > $icopies = $iwin98_copies; > } > > my $itotal = ceil($ipages / $igroups) * $icopies; > > if ($SUBMIT2DB == 0) { > print "================= > PAGES: $ipages > GROUPS: $igroups pages per sheet > COPIES: $icopies > TOTAL: $itotal > =================\n"; > } > return $itotal; > } > > my($ipages); > > #if (!exists($args{'e'})) { > # print("No file\n"); > # exit $RET_JABORT; > #} > > # ------------------------ MAIN SECTION --------------------------- > #$ipages = getNumPagesFromPS((exists($args{'d'})? ($args{'d'}."\/") : > "") ."$args{'e'}"); > $ipages = getNumPagesFromPS(); > my ($printable,$jobtitle); > if ($ipages < 1) { # If not PS or could not read page numbers print error > $printable = 0; > $jobtitle = $CANNOT_PRINT_TITLE . $args{'J'}; > } else { > $printable = 1; > $jobtitle = $args{'J'}; > } > > if ($SUBMIT2DB) { > my $stimestp = $args{'D'}; > $stimestp =~ s/\-|:|\.\d+$//g; # Remove the -,: and the .### > miliseconds. > $args{'n'} = uc($args{'n'}); > > my $dbh = > DBI->connect("DBI:mysql:database=$serverDb;host=$serverName;port=$serverPort",$serverUser,$serverPass); > my $statement = "INSERT INTO $serverTabl > (job_id,host,user,title,pages,time,status) VALUES"; > $statement .= > qq(("$args{'A'}","$args{'H'}","$args{'n'}","$jobtitle",$ipages,$stimestp,$printable)); > my $success = $dbh->do($statement); > $dbh->disconnect; > } > exit $RET_JSUCC; > > > > > Any pointers? > To unsubscribe from this list, please email [EMAIL PROTECTED] & you will be removed. Yahoo! Groups Links <*> To visit your group on the web, go to: http://groups.yahoo.com/group/LINUX_Newbies/ <*> Your email settings: Individual Email | Traditional <*> To change settings online go to: http://groups.yahoo.com/group/LINUX_Newbies/join (Yahoo! ID required) <*> To change settings via email: mailto:[EMAIL PROTECTED] mailto:[EMAIL PROTECTED] <*> To unsubscribe from this group, send an email to: [EMAIL PROTECTED] <*> Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/
