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
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()
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()