Show
Ignore:
Timestamp:
10/06/08 00:22:07 (16 years ago)
Author:
jerome
Message:

Removed spaces at EOL.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • pkpgcounter/trunk/pkpgpdls/pcl345.py

    r3410 r3436  
    88# the Free Software Foundation, either version 3 of the License, or 
    99# (at your option) any later version. 
    10 #  
     10# 
    1111# This program is distributed in the hope that it will be useful, 
    1212# but WITHOUT ANY WARRANTY; without even the implied warranty of 
    1313# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
    1414# GNU General Public License for more details. 
    15 #  
     15# 
    1616# You should have received a copy of the GNU General Public License 
    1717# along with this program.  If not, see <http://www.gnu.org/licenses/>. 
     
    3838class Parser(pdlparser.PDLParser) : 
    3939    """A parser for PCL3, PCL4, PCL5 documents.""" 
    40     totiffcommands = [ 'pcl6 -sDEVICE=pdfwrite -r"%(dpi)i" -dPARANOIDSAFER -dNOPAUSE -dBATCH -dQUIET -sOutputFile=- "%(infname)s" | gs -sDEVICE=tiff24nc -dPARANOIDSAFER -dNOPAUSE -dBATCH -dQUIET -r%(dpi)i -sOutputFile="%(outfname)s" -',  
     40    totiffcommands = [ 'pcl6 -sDEVICE=pdfwrite -r"%(dpi)i" -dPARANOIDSAFER -dNOPAUSE -dBATCH -dQUIET -sOutputFile=- "%(infname)s" | gs -sDEVICE=tiff24nc -dPARANOIDSAFER -dNOPAUSE -dBATCH -dQUIET -r%(dpi)i -sOutputFile="%(outfname)s" -', 
    4141                       'pcl6 -sDEVICE=pswrite -r"%(dpi)i" -dPARANOIDSAFER -dNOPAUSE -dBATCH -dQUIET -sOutputFile=- "%(infname)s" | gs -sDEVICE=tiff24nc -dPARANOIDSAFER -dNOPAUSE -dBATCH -dQUIET -r%(dpi)i -sOutputFile="%(outfname)s" -', 
    4242                     ] 
     
    4848                    2 : "Letter", 
    4949                    3 : "Legal", 
    50                     6 : "Ledger",  
     50                    6 : "Ledger", 
    5151                    25 : "A5", 
    5252                    26 : "A4", 
     
    6262                    100 : "B5Envelope", 
    6363                    101 : "Custom", 
    64                  }    
    65                   
     64                 } 
     65 
    6666    mediasources = { # ESC&l####H 
    6767                     0 : "Default", 
     
    7575                     8 : "Tray1", 
    7676                   } 
    77                     
     77 
    7878    orientations = { # ESC&l####O 
    7979                     0 : "Portrait", 
     
    8282                     3 : "ReverseLandscape", 
    8383                   } 
    84                     
     84 
    8585    mediatypes = { # ESC&l####M 
    8686                     0 : "Plain", 
     
    9090                     4 : "Transparent", 
    9191                   } 
    92          
    93     def isValid(self) :     
     92 
     93    def isValid(self) : 
    9494        """Returns True if data is PCL3/4/5, else False.""" 
    9595        try : 
     
    9797            while self.firstblock[pos] == chr(0) : 
    9898                pos += 1 
    99         except IndexError :         
     99        except IndexError : 
    100100            return False 
    101         else :     
     101        else : 
    102102            firstblock = self.firstblock[pos:] 
    103103            if firstblock.startswith("\033E\033") or \ 
     
    111111               (firstblock.startswith(chr(0xcd)+chr(0xca)) and (firstblock.find("\033E\033") != -1)) : 
    112112                return True 
    113             else :     
     113            else : 
    114114                return False 
    115          
     115 
    116116    def setPageDict(self, attribute, value) : 
    117117        """Initializes a page dictionnary.""" 
    118118        dic = self.pages.setdefault(self.pagecount, { "linescount" : 1, 
    119                                                       "copies" : 1,  
    120                                                       "mediasource" : "Main",  
    121                                                       "mediasize" : "Default",  
    122                                                       "mediatype" : "Plain",  
    123                                                       "orientation" : "Portrait",  
    124                                                       "escaped" : "",  
     119                                                      "copies" : 1, 
     120                                                      "mediasource" : "Main", 
     121                                                      "mediasize" : "Default", 
     122                                                      "mediatype" : "Plain", 
     123                                                      "orientation" : "Portrait", 
     124                                                      "escaped" : "", 
    125125                                                      "duplex": 0 }) 
    126126        dic[attribute] = value 
    127          
    128     def readByte(self) :     
     127 
     128    def readByte(self) : 
    129129        """Reads a byte from the input stream.""" 
    130130        tag = ord(self.minfile[self.pos]) 
    131131        self.pos += 1 
    132132        return tag 
    133          
    134     def endPage(self) :     
     133 
     134    def endPage(self) : 
    135135        """Handle the FF marker.""" 
    136136        #self.logdebug("FORMFEED %i at %08x" % (self.pagecount, self.pos-1)) 
     
    138138            # Increments page count only if we are not inside an HPGL2 block 
    139139            self.pagecount += 1 
    140          
    141     def escPercent(self) :     
     140 
     141    def escPercent(self) : 
    142142        """Handles the ESC% sequence.""" 
    143143        if self.minfile[self.pos : self.pos+7] == r"-12345X" : 
     
    147147            quotes = 0 
    148148            char = chr(self.readByte()) 
    149             while ((char < ASCIILIMIT) or (quotes % 2)) and (char not in (FORMFEED, ESCAPE, NUL)) :   
     149            while ((char < ASCIILIMIT) or (quotes % 2)) and (char not in (FORMFEED, ESCAPE, NUL)) : 
    150150                buffer.append(char) 
    151151                if char == '"' : 
     
    155155            #self.logdebug("ESCAPED : %s" % "".join(buffer)) 
    156156            self.pos -= 1   # Adjust position 
    157         else :     
     157        else : 
    158158            while 1 : 
    159159                (value, end) = self.getInteger() 
     
    162162                    while self.minfile[self.pos] != ESCAPE : 
    163163                        self.pos += 1 
    164                     self.pos -= 1     
    165                     return  
    166                 elif end == 'A' :     
     164                    self.pos -= 1 
     165                    return 
     166                elif end == 'A' : 
    167167                    self.exitHPGL2() 
    168168                    return 
    169                 elif end is None :     
     169                elif end is None : 
    170170                    return 
    171          
    172     def enterHPGL2(self) :     
     171 
     172    def enterHPGL2(self) : 
    173173        """Enters HPGL2 mode.""" 
    174174        #self.logdebug("ENTERHPGL2 %08x" % self.pos) 
    175175        self.hpgl2 = True 
    176          
    177     def exitHPGL2(self) :     
     176 
     177    def exitHPGL2(self) : 
    178178        """Exits HPGL2 mode.""" 
    179179        #self.logdebug("EXITHPGL2 %08x" % self.pos) 
    180180        self.hpgl2 = False 
    181          
    182     def handleTag(self, tagtable) :     
     181 
     182    def handleTag(self, tagtable) : 
    183183        """Handles tags.""" 
    184184        tagtable[self.readByte()]() 
    185          
    186     def escape(self) :     
     185 
     186    def escape(self) : 
    187187        """Handles the ESC character.""" 
    188188        #self.logdebug("ESCAPE") 
    189189        self.handleTag(self.esctags) 
    190          
    191     def escAmp(self) :     
     190 
     191    def escAmp(self) : 
    192192        """Handles the ESC& sequence.""" 
    193193        #self.logdebug("AMP") 
    194194        self.handleTag(self.escamptags) 
    195          
    196     def escStar(self) :     
     195 
     196    def escStar(self) : 
    197197        """Handles the ESC* sequence.""" 
    198198        #self.logdebug("STAR") 
    199199        self.handleTag(self.escstartags) 
    200          
    201     def escLeftPar(self) :     
     200 
     201    def escLeftPar(self) : 
    202202        """Handles the ESC( sequence.""" 
    203203        #self.logdebug("LEFTPAR") 
    204204        self.handleTag(self.escleftpartags) 
    205          
    206     def escRightPar(self) :     
     205 
     206    def escRightPar(self) : 
    207207        """Handles the ESC( sequence.""" 
    208208        #self.logdebug("RIGHTPAR") 
    209209        self.handleTag(self.escrightpartags) 
    210          
    211     def escE(self) :     
     210 
     211    def escE(self) : 
    212212        """Handles the ESCE sequence.""" 
    213213        #self.logdebug("RESET") 
    214214        self.resets += 1 
    215          
    216     def escAmpl(self) :     
     215 
     216    def escAmpl(self) : 
    217217        """Handles the ESC&l sequence.""" 
    218218        while 1 : 
     
    244244                self.setPageDict("copies", value) 
    245245                #self.logdebug("COPIES %i" % value) 
    246             elif end == 'F' :     
     246            elif end == 'F' : 
    247247                self.linesperpagevalues.append(value) 
    248248                self.linesperpage = value 
     
    250250            #else : 
    251251            #    self.logdebug("Unexpected end <%s> and value <%s>" % (end, value)) 
    252                  
    253     def escAmpa(self) :     
     252 
     253    def escAmpa(self) : 
    254254        """Handles the ESC&a sequence.""" 
    255255        while 1 : 
     
    257257            if value is None : 
    258258                return 
    259             if end == 'G' :     
     259            if end == 'G' : 
    260260                #self.logdebug("BACKSIDES %i" % value) 
    261261                self.backsides.append(value) 
    262262                self.setPageDict("duplex", value) 
    263                  
    264     def escAmpp(self) :     
     263 
     264    def escAmpp(self) : 
    265265        """Handles the ESC&p sequence.""" 
    266266        while 1 : 
     
    268268            if value is None : 
    269269                return 
    270             if end == 'X' :     
     270            if end == 'X' : 
    271271                self.pos += value 
    272272                #self.logdebug("SKIPTO %08x" % self.pos) 
    273                  
    274     def escStarb(self) :     
     273 
     274    def escStarb(self) : 
    275275        """Handles the ESC*b sequence.""" 
    276276        while 1 : 
     
    278278            if (end is None) and (value is None) : 
    279279                return 
    280             if end in ('V', 'W', 'v', 'w') :     
     280            if end in ('V', 'W', 'v', 'w') : 
    281281                self.pos += (value or 0) 
    282282                #self.logdebug("SKIPTO %08x" % self.pos) 
    283                  
    284     def escStarr(self) :     
     283 
     284    def escStarr(self) : 
    285285        """Handles the ESC*r sequence.""" 
    286286        while 1 : 
     
    289289                if end is None : 
    290290                    return 
    291                 elif end in ('B', 'C') :         
     291                elif end in ('B', 'C') : 
    292292                    #self.logdebug("EndGFX") 
    293293                    if self.startgfx : 
    294294                        self.endgfx.append(1) 
    295                     else :     
     295                    else : 
    296296                        #self.logdebug("EndGFX found before StartGFX, ignored.") 
    297297                        pass 
     
    299299                #self.logdebug("StartGFX %i" % value) 
    300300                self.startgfx.append(value) 
    301                  
    302     def escStaroptAmpu(self) :     
     301 
     302    def escStaroptAmpu(self) : 
    303303        """Handles the ESC*o ESC*p ESC*t and ESC&u sequences.""" 
    304304        while 1 : 
     
    306306            if value is None : 
    307307                return 
    308          
    309     def escSkipSomethingW(self) :     
     308 
     309    def escSkipSomethingW(self) : 
    310310        """Handles the ESC???###W sequences.""" 
    311311        while 1 : 
     
    313313            if value is None : 
    314314                return 
    315             if end == 'W' :     
     315            if end == 'W' : 
    316316                self.pos += value 
    317317                #self.logdebug("SKIPTO %08x" % self.pos) 
    318                  
    319     def newLine(self) :             
     318 
     319    def newLine(self) : 
    320320        """Handles new lines markers.""" 
    321321        if not self.hpgl2 : 
    322322            dic = self.pages.get(self.pagecount, None) 
    323323            if dic is None : 
    324                 self.setPageDict("linescount", 1)                               
     324                self.setPageDict("linescount", 1) 
    325325                dic = self.pages.get(self.pagecount) 
    326             nblines = dic["linescount"]     
    327             self.setPageDict("linescount", nblines + 1)                               
     326            nblines = dic["linescount"] 
     327            self.setPageDict("linescount", nblines + 1) 
    328328            if (self.linesperpage is not None) \ 
    329329               and (dic["linescount"] > self.linesperpage) : 
    330330                self.pagecount += 1 
    331          
    332     def getInteger(self) :     
     331 
     332    def getInteger(self) : 
    333333        """Returns an integer value and the end character.""" 
    334334        sign = 1 
     
    346346                else : 
    347347                    return (value, char) 
    348             else :     
    349                 value = ((value or 0) * 10) + int(char)     
    350          
    351     def skipByte(self) :     
     348            else : 
     349                value = ((value or 0) * 10) + int(char) 
     350 
     351    def skipByte(self) : 
    352352        """Skips a byte.""" 
    353353        #self.logdebug("SKIPBYTE %08x ===> %02x" % (self.pos, ord(self.minfile[self.pos]))) 
    354354        self.pos += 1 
    355          
    356     def handleImageRunner(self) :     
     355 
     356    def handleImageRunner(self) : 
    357357        """Handles Canon ImageRunner tags.""" 
    358358        tag = self.readByte() 
     
    367367        else : 
    368368            self.pos -= 1 # Adjust position 
    369                  
    370     def getJobSize(self) :      
     369 
     370    def getJobSize(self) : 
    371371        """Count pages in a PCL5 document. 
    372           
     372 
    373373           Should also work for PCL3 and PCL4 documents. 
    374             
     374 
    375375           Algorithm from pclcount 
    376            (c) 2003, by Eduardo Gielamo Oliveira & Rodolfo Broco Manin  
     376           (c) 2003, by Eduardo Gielamo Oliveira & Rodolfo Broco Manin 
    377377           published under the terms of the GNU General Public Licence v2. 
    378            
     378 
    379379           Backported from C to Python by Jerome Alet, then enhanced 
    380380           with more PCL tags detected. I think all the necessary PCL tags 
    381381           are recognized to correctly handle PCL5 files wrt their number 
    382382           of pages. The documentation used for this was : 
    383           
     383 
    384384           HP PCL/PJL Reference Set 
    385385           PCL5 Printer Language Technical Quick Reference Guide 
    386            http://h20000.www2.hp.com/bc/docs/support/SupportManual/bpl13205/bpl13205.pdf  
     386           http://h20000.www2.hp.com/bc/docs/support/SupportManual/bpl13205/bpl13205.pdf 
    387387        """ 
    388388        infileno = self.infile.fileno() 
     
    405405        self.imagerunnermarker2 = chr(0x10) + chr(0x02) 
    406406        self.isimagerunner = (minfile[:2] == self.imagerunnermarker1) 
    407          
     407 
    408408        tags = [ lambda : None] * 256 
    409409        tags[ord(LINEFEED)] = self.newLine 
     
    412412        tags[ord(ASCIILIMIT)] = self.skipByte 
    413413        tags[ord(self.imagerunnermarker1[0])] = self.handleImageRunner 
    414          
     414 
    415415        self.esctags = [ lambda : None ] * 256 
    416416        self.esctags[ord('%')] = self.escPercent 
     
    420420        self.esctags[ord(')')] = self.escRightPar 
    421421        self.esctags[ord('E')] = self.escE 
    422          
     422 
    423423        self.escamptags = [lambda : None ] * 256 
    424424        self.escamptags[ord('a')] = self.escAmpa 
     
    428428        self.escamptags[ord('n')] = self.escSkipSomethingW 
    429429        self.escamptags[ord('u')] = self.escStaroptAmpu 
    430          
     430 
    431431        self.escstartags = [ lambda : None ] * 256 
    432432        self.escstartags[ord('b')] = self.escStarb 
     
    441441        self.escstartags[ord('m')] = self.escSkipSomethingW 
    442442        self.escstartags[ord('v')] = self.escSkipSomethingW 
    443          
     443 
    444444        self.escleftpartags = [ lambda : None ] * 256 
    445445        self.escleftpartags[ord('s')] = self.escSkipSomethingW 
    446446        self.escleftpartags[ord('f')] = self.escSkipSomethingW 
    447          
     447 
    448448        self.escrightpartags = [ lambda : None ] * 256 
    449449        self.escrightpartags[ord('s')] = self.escSkipSomethingW 
    450          
     450 
    451451        self.pos = 0 
    452452        try : 
     
    454454                while 1 : 
    455455                    tags[self.readByte()]() 
    456             except IndexError : # EOF ?             
     456            except IndexError : # EOF ? 
    457457                pass 
    458458        finally : 
    459459            self.minfile.close() 
    460          
     460 
    461461        self.logdebug("Pagecount : \t\t\t%i" % self.pagecount) 
    462462        self.logdebug("Resets : \t\t\t%i" % self.resets) 
     
    482482        self.logdebug("NbBackSides : \t\t\t%i" % nbbacksides) 
    483483        self.logdebug("IsImageRunner : \t\t\t%s" % self.isimagerunner) 
    484          
     484 
    485485        if self.isimagerunner : 
    486486            self.logdebug("Adjusting PageCount : +1") 
    487487            self.pagecount += 1      # ImageRunner adjustment 
    488         elif self.linesperpage is not None :     
     488        elif self.linesperpage is not None : 
    489489            self.logdebug("Adjusting PageCount : +1") 
    490490            self.pagecount += 1      # Adjusts for incomplete last page 
     
    507507            self.logdebug("Adjusting PageCount : -1") 
    508508            self.pagecount -= 1 
    509                      
     509 
    510510        self.pagecount = self.pagecount or nbmediasourcesdefault or nbmediasizes or nborientations or self.resets 
    511          
     511 
    512512        if not self.pagecount : 
    513513            if self.resets == len(self.startgfx) : 
    514                 self.pagecount = self.resets  
    515          
    516         defaultpjlcopies = 1     
     514                self.pagecount = self.resets 
     515 
     516        defaultpjlcopies = 1 
    517517        defaultduplexmode = "Simplex" 
    518518        defaultpapersize = "" 
     
    539539                    pjlcopies = nbqty 
    540540                else : 
    541                     if oldpjlcopies == -1 :     
     541                    if oldpjlcopies == -1 : 
    542542                        pjlcopies = defaultpjlcopies 
    543                     else :     
    544                         pjlcopies = oldpjlcopies     
    545                 if page["duplex"] :         
     543                    else : 
     544                        pjlcopies = oldpjlcopies 
     545                if page["duplex"] : 
    546546                    duplexmode = "Duplex" 
    547                 else :     
     547                else : 
    548548                    defaultdm = pjlparser.default_variables.get("DUPLEX", "") 
    549549                    if defaultdm : 
    550550                        if defaultdm.upper() == "ON" : 
    551551                            defaultduplexmode = "Duplex" 
    552                         else :     
     552                        else : 
    553553                            defaultduplexmode = "Simplex" 
    554554                    envdm = pjlparser.environment_variables.get("DUPLEX", "") 
     
    556556                        if envdm.upper() == "ON" : 
    557557                            duplexmode = "Duplex" 
    558                         else :     
     558                        else : 
    559559                            duplexmode = "Simplex" 
    560                     else :         
     560                    else : 
    561561                        duplexmode = oldduplexmode or defaultduplexmode 
    562562                defaultps = pjlparser.default_variables.get("PAPER", "") 
     
    566566                if envps : 
    567567                    papersize = envps 
    568                 else :     
     568                else : 
    569569                    if not oldpapersize : 
    570570                        papersize = defaultpapersize 
    571                     else :     
     571                    else : 
    572572                        papersize = oldpapersize 
    573             else :         
     573            else : 
    574574                if oldpjlcopies == -1 : 
    575575                    pjlcopies = defaultpjlcopies 
    576                 else :     
     576                else : 
    577577                    pjlcopies = oldpjlcopies 
    578                  
     578 
    579579                duplexmode = (page["duplex"] and "Duplex") or oldduplexmode or defaultduplexmode 
    580                 if not oldpapersize :     
     580                if not oldpapersize : 
    581581                    papersize = defaultpapersize 
    582                 else :     
     582                else : 
    583583                    papersize = oldpapersize 
    584584                papersize = oldpapersize or page["mediasize"] 
    585585            if page["mediasize"] != "Default" : 
    586586                papersize = page["mediasize"] 
    587             if not duplexmode :     
     587            if not duplexmode : 
    588588                duplexmode = oldduplexmode or defaultduplexmode 
    589             oldpjlcopies = pjlcopies     
     589            oldpjlcopies = pjlcopies 
    590590            oldduplexmode = duplexmode 
    591591            oldpapersize = papersize 
     
    598598                                              page["mediasource"], \ 
    599599                                              duplexmode)) 
    600          
     600 
    601601        return self.pagecount