def readarray(self, source, setobj=lambda x:None, original=None):
        special = self.special
        result = PdfArray()
        setobj(result)

        for value in source:
            if value == ']':
                break
            if value in special:
                value = special[value](source)
            elif value == 'R':
                generation = result.pop()
                value = self.readindirect(result.pop(), generation)
            result.append(value)
        return result
    def readarray(self, source, setobj=lambda x: None, original=None):
        special = self.special
        result = PdfArray()
        setobj(result)

        for value in source:
            if value == ']':
                break
            if value in special:
                value = special[value](source)
            elif value == 'R':
                generation = result.pop()
                value = self.readindirect(result.pop(), generation)
            result.append(value)
        return result
Esempio n. 3
0
 def __init__(self, version='1.3', compress=True):
     self.pagearray = PdfArray()
     self.compress = compress
     self.version = version
Esempio n. 4
0
class PdfWriter(object):

    _trailer = None

    def __init__(self, version='1.3', compress=True):
        self.pagearray = PdfArray()
        self.compress = compress
        self.version = version

    def addpage(self, page):
        self._trailer = None
        assert page.Type == PdfName.Page
        inheritable = page.inheritable  # searches for resources
        self.pagearray.append(
            IndirectPdfDict(
                page,
                Resources=inheritable.Resources,
                MediaBox=inheritable.MediaBox,
                CropBox=inheritable.CropBox,
                Rotate=inheritable.Rotate,
            ))
        return self

    addPage = addpage  # for compatibility with pyPdf

    def addpages(self, pagelist):
        for page in pagelist:
            self.addpage(page)
        return self

    def _get_trailer(self):
        trailer = self._trailer
        if trailer is not None:
            return trailer

        # Create the basic object structure of the PDF file
        trailer = PdfDict(Root=IndirectPdfDict(
            Type=PdfName.Catalog,
            Pages=IndirectPdfDict(Type=PdfName.Pages,
                                  Count=PdfObject(len(self.pagearray)),
                                  Kids=self.pagearray)))
        # Make all the pages point back to the page dictionary
        pagedict = trailer.Root.Pages
        for page in pagedict.Kids:
            page.Parent = pagedict
        self._trailer = trailer
        return trailer

    def _set_trailer(self, trailer):
        self._trailer = trailer

    trailer = property(_get_trailer, _set_trailer)

    def write(self, fname, trailer=None):
        trailer = trailer or self.trailer

        # Dump the data.  We either have a filename or a preexisting
        # file object.
        preexisting = hasattr(fname, 'write')
        f = preexisting and fname or open(fname, 'wb')
        FormatObjects.dump(f, trailer, self.version, self.compress)
        if not preexisting:
            f.close()
 def __init__(self, version='1.3', compress=True):
     self.pagearray = PdfArray()
     self.compress = compress
     self.version = version
class PdfWriter(object):

    _trailer = None

    def __init__(self, version='1.3', compress=True):
        self.pagearray = PdfArray()
        self.compress = compress
        self.version = version

    def addpage(self, page):
        self._trailer = None
        assert page.Type == PdfName.Page
        inheritable = page.inheritable # searches for resources
        self.pagearray.append(
            IndirectPdfDict(
                page,
                Resources = inheritable.Resources,
                MediaBox = inheritable.MediaBox,
                CropBox = inheritable.CropBox,
                Rotate = inheritable.Rotate,
            )
        )
        return self

    addPage = addpage  # for compatibility with pyPdf

    def addpages(self, pagelist):
        for page in pagelist:
            self.addpage(page)
        return self

    def _get_trailer(self):
        trailer = self._trailer
        if trailer is not None:
            return trailer

        # Create the basic object structure of the PDF file
        trailer = PdfDict(
            Root = IndirectPdfDict(
                Type = PdfName.Catalog,
                Pages = IndirectPdfDict(
                    Type = PdfName.Pages,
                    Count = PdfObject(len(self.pagearray)),
                    Kids = self.pagearray
                )
            )
        )
        # Make all the pages point back to the page dictionary
        pagedict = trailer.Root.Pages
        for page in pagedict.Kids:
            page.Parent = pagedict
        self._trailer = trailer
        return trailer

    def _set_trailer(self, trailer):
        self._trailer = trailer

    trailer = property(_get_trailer, _set_trailer)

    def write(self, fname, trailer=None):
        trailer = trailer or self.trailer

        # Dump the data.  We either have a filename or a preexisting
        # file object.
        preexisting = hasattr(fname, 'write')
        f = preexisting and fname or open(fname, 'wb')
        FormatObjects.dump(f, trailer, self.version, self.compress)
        if not preexisting:
            f.close()