Changeset 745

Show
Ignore:
Timestamp:
06/07/06 23:17:26 (2 years ago)
Author:
mfenniak
Message:

Begin adding some properties to the PdfFileReader? to make it easier to work with.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • pypdf/trunk/pyPdf/pdf.py

    r744 r745  
    4545import filters 
    4646from generic import * 
    47 from utils import readNonWhitespace, readUntilWhitespace 
     47from utils import readNonWhitespace, readUntilWhitespace, ConvertFunctionsToVirtualList 
    4848from sets import ImmutableSet 
    4949 
     
    227227        return retval 
    228228 
     229    documentInfo = property(lambda self: self.getDocumentInfo(), None, None, 
     230            """See PdfFileReader.getDocumentInfo().  This property was added  
     231            in pyPdf v1.7, and will exist for all future v1.x releases.""") 
     232 
    229233    def getNumPages(self): 
    230234        """ 
     
    236240            self._flatten() 
    237241        return len(self.flattenedPages) 
     242 
     243    numPages = property(lambda self: self.getNumPages(), None, None, 
     244            """See PdfFileReader.getNamePages().  This property was added in 
     245            v1.7, and will exist for all future v1.x releases.""") 
    238246 
    239247    def getPage(self, pageNumber): 
     
    249257            self._flatten() 
    250258        return self.flattenedPages[pageNumber] 
     259 
     260    pages = property(lambda self: ConvertFunctionsToVirtualList(self.getNumPages, self.getPage), 
     261            None, None, """Returns a sequence of pages.  This property was 
     262            added in v1.7 and will exist for all future v1.x releases.""") 
    251263 
    252264    def _flatten(self, pages = None, inherit = None): 
  • pypdf/trunk/pyPdf/utils.py

    r731 r745  
    5151        tok = stream.read(1) 
    5252    return tok 
     53 
     54class ConvertFunctionsToVirtualList(object): 
     55    def __init__(self, lengthFunction, getFunction): 
     56        self.lengthFunction = lengthFunction 
     57        self.getFunction = getFunction 
     58 
     59    def __len__(self): 
     60        return self.lengthFunction() 
     61 
     62    def __getitem__(self, index): 
     63        if not isinstance(index, int): 
     64            raise TypeError, "sequence indices must be integers" 
     65        len_self = len(self) 
     66        if index < 0: 
     67            # support negative indexes 
     68            index = len_self + index 
     69        if index < 0 or index >= len_self: 
     70            raise IndexError, "sequence index out of range" 
     71        return self.getFunction(index) 
     72 
     73