def writepages(self, outname, pagelist, side2flag): side = 'front' imposedpage = 'left' outPDF = Document(Rectangle(self.papersize[0], self.papersize[1])) outstream = open(outname, 'w') output = PdfWriter.getInstance(outPDF, outstream) outPDF.open() pagedata = output.getDirectContent() #print "in book:writepages" for i in range(len(pagelist)): if i % 2 == 0: outPDF.newPage() outPDF.add(Chunk.NEWLINE) pagenumber = pagelist[i] ## scaling code here if pagenumber == 'b': #print 'blank' pass else: if i % 2 == 0: imposedpage = 'left' if side2flag or ((i + 2) % 4 == 0 and self.duplex): side = 'back' else: side = 'front' else: imposedpage = 'right' #print 'adding page' baseline, leftstart, scale1, scale2 = self.calculateposition( pagenumber, imposedpage, side) page = output.getImportedPage(self.currentdoc, pagenumber) pagedata.addTemplate(page, -0, scale1, scale2, 0, baseline, leftstart) #print i,pagenumber,side,imposedpage outPDF.close() outstream.close()
for file in sys.argv[1:len(sys.argv) - 1]: reader = PdfReader(file) reader.consolidateNamedDestinations() bookmarks = SimpleBookmark.getBookmark(reader) if bookmarks != None: if page_offset != 0: SimpleBookmark.shiftPageNumbers(bookmarks, \ page_offset, None) all_bookmarks.add(bookmarks) page_count = reader.getNumberOfPages() page_offset += page_offset if copy == None: document = Document(reader.getPageSizeWithRotation(1)) output = FileOutputStream(sys.argv[len(sys.argv) - 1]) copy = PdfCopy(document, output) document.open() print "Adding", page_count, "pages from", file for k in range(0, page_count): copy.addPage(copy.getImportedPage(reader, k + 1)) if reader.getAcroForm() != None: copy.copyAcroForm(reader) if not all_bookmarks.isEmpty(): copy.setOutlines(all_bookmarks)