Пример #1
0
    def __init__(self, filename, stream=None, streamlen=0):
        """__init__(fz_document_s self, char const * filename, char * stream=None, int streamlen=0) -> Document"""

        if type(filename) == str:
            pass
        elif type(filename) == unicode:
            filename = filename.encode('utf8')
        else:
            raise TypeError("filename must be a string")
        if not os.path.exists(filename) and streamlen == 0:
            raise IOError("no such file: '%s'" % (filename,))
        self.name = filename
        self.streamlen = streamlen
        self.isClosed = 0
        self.isEncrypted = 0
        self.metadata = None



        this = _fitz.new_Document(filename, stream, streamlen)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

        if this and self.needsPass:
            self.isEncrypted = 1
        # we won't init encrypted doc until it is decrypted
        if this and not self.needsPass:
            self.initData()
            self.thisown = False
Пример #2
0
    def __init__(self, filename, stream=None, streamlen=0):

        '''
        filename or filetype: string specifying a file name or a MIME type
        stream:               string containing document data
        streamlen:            integer containing length of stream
        '''
        if type(filename) == str:
            pass
        elif type(filename) == unicode:
            filename = filename.encode('utf8')
        else:
            raise TypeError("filename must be a string")
        if not os.path.exists(filename) and streamlen == 0:
            raise IOError("no such file: '%s'" % (filename,))
        self.name = filename
        self.streamlen = streamlen
        self.isClosed = 0
        self.isEncrypted = 0
        self.metadata = None



        this = _fitz.new_Document(filename, stream, streamlen)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

        if this and self.needsPass:
            self.isEncrypted = 1
        # we won't init encrypted doc until it is decrypted
        if this and not self.needsPass:
            self.initData()
            self.thisown = False
Пример #3
0
    def __init__(self, filename, stream=None, streamlen=0):

        '''
        filename or filetype: string specifying a file name or a MIME type
        stream:               string containing document data
        streamlen:            integer containing length of stream
        '''
        if type(filename) == str:
            pass
        elif type(filename) == unicode:
            filename = filename.encode('utf8')
        else:
            raise TypeError("filename must be a string")
        self.name = filename
        self.isClosed = 0



        this = _fitz.new_Document(filename, stream, streamlen)
        try:
            self.this.append(this)
        except:
            self.this = this

                    #================================================================
                    # Function: Table of Contents
                    #================================================================
        def ToC():
            if not self._outline:              # contains no outline:
                return []                      # return empty list
            lvl = 0                            # records current indent level
            ltab = {}                          # last OutlineItem on this level
            liste = []                         # will hold flattened outline
            olItem = self._outline
            while olItem:
                while olItem:                  # process one OutlineItem
                    lvl += 1                   # its indent level
                    zeile = [lvl,              # create one outline line
                             olItem.title.decode("UTF-8"),
                             olItem.dest.page]
                    liste.append(zeile)        # append it
                    ltab[lvl] = olItem         # record OutlineItem in level table
                    olItem = olItem.down       # go to child OutlineItem
                olItem = ltab[lvl].next        # no more children, look for brothers
                if olItem:                     # have any?
                    lvl -= 1                   # prep. proc.: decrease lvl recorder
                    continue
                else:                          # no kids, no brothers, now what?
                    while lvl > 1 and not olItem:
                        lvl -= 1               # go look for uncles
                        olItem = ltab[lvl].next
                    if lvl < 1:                # out of relatives
                        return liste           # return ToC
                    lvl -= 1
            return liste                       # return ToC

        if this:
            self._outline = self._loadOutline()
            self.metadata = dict([(k,self._getMetadata(v)) for k,v in {'format':'format','title':'info:Title',
                                                                       'author':'info:Author','subject':'info:Subject',
                                                                       'keywords':'info:Keywords','creator':'info:Creator',
                                                                       'producer':'info:Producer','creationDate':'info:CreationDate',
                                                                       'modDate':'info:ModDate'}.items()])
            self.metadata['encryption'] = None if self._getMetadata('encryption')=='None' else self._getMetadata('encryption')
            self.ToC = ToC
            self.thisown = False
Пример #4
0
    def __init__(self, filename, stream=None, streamlen=0):

        '''
        filename or filetype: string specifying a file name or a MIME type
        stream:               string containing document data
        streamlen:            integer containing length of stream
        '''
        if type(filename) == str:
            pass
        elif type(filename) == unicode:
            filename = filename.encode('utf8')
        else:
            raise TypeError("filename must be a string")
        self.name = filename
        self.isClosed = 0



        this = _fitz.new_Document(filename, stream, streamlen)
        try:
            self.this.append(this)
        except:
            self.this = this

                    #================================================================
                    # Function: Table of Contents
                    #================================================================
        def ToC():

            def recurse(olItem, liste, lvl):
                while olItem:
                    if olItem.title:
                        title = olItem.title.decode("utf-8")
                    else:
                        title = u" "
                    if olItem.dest.kind == 1:
                        page = olItem.dest.page + 1
                    else:
                        page = 0
                    liste.append([lvl, title, page])
                    if olItem.down:
                        liste = recurse(olItem.down, liste, lvl+1)
                    olItem = olItem.next
                return liste

            olItem = self.outline
            if not olItem: return []
            lvl = 1
            liste = []
            return recurse(olItem, liste, lvl)

        if this:
            self._outline = self._loadOutline()
            self.metadata = dict([(k,self._getMetadata(v)) for k,v in {'format':'format','title':'info:Title',
                                                                       'author':'info:Author','subject':'info:Subject',
                                                                       'keywords':'info:Keywords','creator':'info:Creator',
                                                                       'producer':'info:Producer','creationDate':'info:CreationDate',
                                                                       'modDate':'info:ModDate'}.items()])
            self.metadata['encryption'] = None if self._getMetadata('encryption')=='None' else self._getMetadata('encryption')
            self.ToC = ToC
            self.thisown = False
Пример #5
0
    def __init__(self, filename, stream=None, streamlen=0):
        '''
        filename or filetype: string specifying a file name or a MIME type
        stream:               string containing document data
        streamlen:            integer containing length of stream
        '''
        if type(filename) == str:
            pass
        elif type(filename) == unicode:
            filename = filename.encode('utf8')
        else:
            raise TypeError("filename must be a string")
        self.name = filename
        self.isClosed = 0

        this = _fitz.new_Document(filename, stream, streamlen)
        try:
            self.this.append(this)
        except:
            self.this = this

            #================================================================
            # Function: Table of Contents
            #================================================================
        def ToC():
            def recurse(olItem, liste, lvl):
                while olItem:
                    if olItem.title:
                        title = olItem.title.decode("utf-8")
                    else:
                        title = u" "
                    if olItem.dest.kind == 1:
                        page = olItem.dest.page + 1
                    else:
                        page = 0
                    liste.append([lvl, title, page])
                    if olItem.down:
                        liste = recurse(olItem.down, liste, lvl + 1)
                    olItem = olItem.next
                return liste

            olItem = self.outline
            if not olItem: return []
            lvl = 1
            liste = []
            return recurse(olItem, liste, lvl)

        if this:
            self._outline = self._loadOutline()
            self.metadata = dict([(k, self._getMetadata(v)) for k, v in {
                'format': 'format',
                'title': 'info:Title',
                'author': 'info:Author',
                'subject': 'info:Subject',
                'keywords': 'info:Keywords',
                'creator': 'info:Creator',
                'producer': 'info:Producer',
                'creationDate': 'info:CreationDate',
                'modDate': 'info:ModDate'
            }.items()])
            self.metadata['encryption'] = None if self._getMetadata(
                'encryption') == 'None' else self._getMetadata('encryption')
            self.ToC = ToC
            self.thisown = False