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/
 

Reply via email to