Changeset 283 for pkpgcounter/trunk

Show
Ignore:
Timestamp:
11/08/05 00:56:50 (19 years ago)
Author:
jerome
Message:

Can now return an accurate result and ink coverage percents for PS docs.

Files:
1 modified

Legend:

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

    r273 r283  
    2323 
    2424import sys 
     25import os 
     26import tempfile 
    2527import popen2 
    2628 
    2729import pdlparser 
     30import inkcoverage 
    2831 
    2932class Parser(pdlparser.PDLParser) : 
     
    4851        self.logdebug("Internal parser sucks, using GhostScript instead...") 
    4952        self.infile.seek(0) 
    50         command = 'gs -sDEVICE=bbox -dNOPAUSE -dBATCH -dQUIET - 2>&1 | grep -c "%%HiResBoundingBox:" 2>/dev/null' 
     53        command = 'gs -sDEVICE=bbox -dPARANOIDSAFER -dNOPAUSE -dBATCH -dQUIET - 2>&1 | grep -c "%%HiResBoundingBox:" 2>/dev/null' 
    5154        child = popen2.Popen4(command) 
    5255        try : 
     
    155158        self.copies = 1 
    156159        return self.natively() or self.throughGhostScript() 
     160         
     161    def throughTiffMultiPage24NC(self, dpi) : 
     162        """Converts the input file to TIFF format, X dpi, 24 bits per pixel, uncompressed. 
     163           Returns percents of ink coverage and number of pages. 
     164        """    
     165        self.logdebug("Converting input datas to TIFF...") 
     166        self.infile.seek(0) 
     167        (handle, filename) = tempfile.mkstemp(".tmp", "pkpgcounter")     
     168        os.close(handle) 
     169        command = 'gs -sDEVICE=tiff24nc -dPARANOIDSAFER -dNOPAUSE -dBATCH -dQUIET -r%i -sOutputFile="%s" -' % (dpi, filename) 
     170        child = popen2.Popen4(command) 
     171        try : 
     172            data = self.infile.read(pdlparser.MEGABYTE)     
     173            while data : 
     174                child.tochild.write(data) 
     175                data = self.infile.read(pdlparser.MEGABYTE) 
     176            child.tochild.flush() 
     177            child.tochild.close()     
     178        except (IOError, OSError), msg :     
     179            raise pdlparser.PDLParserError, "Problem during conversion to TIFF : %s" % msg 
     180             
     181        child.fromchild.close() 
     182        try : 
     183            child.wait() 
     184        except OSError, msg :     
     185            raise pdlparser.PDLParserError, "Problem during conversion to TIFF : %s" % msg 
     186             
     187        result = inkcoverage.getPercents(filename)     
     188        try : 
     189            os.remove(filename) 
     190        except :     
     191            pass 
     192        return result     
    157193             
    158194