Ejemplo n.º 1
0
def assembleBooklet(inFilename, outFilename, opts):
    """
    """
    opts.paperSize = getattr(pagesizes, opts.paperSize)
    blank, canvas = createBlankPDF(StringIO(), opts)
    reader, writer, stream = _prepFiles(inFilename, outFilename)
    pf = booklet.pechaFactory(reader.getNumPages())
    for sheet in pf.sheets:
        page = side = None
        for block in sheet.blocks:
            if side != block.side:
                if page != None:
                    # finish up the old page
                    writer.addPage(page)
                # make new PDF page
                page = PdfFileReader(blank).getPage(0)
            side = block.side
            blockPDF = reader.getPage(block.number - 1)
            # crop the page to pecha size
            params = (
                reader.getPage(index), 0, pechaHeight,
                float(opts.paperSize[1]), float(opts.paperSize[0]))
            blockPDF = cropPDFPage(*params)
            # rotate if need be
            if block.orientation == UPSIDEDOWN:
                blockPDF.rotateClockwise(180)
            # figure out where on the page to put it
            blockPDF = placeBlock(blockPDF, block.location)
            page.mergePage(blockPDF)
    writer.write(stream)
    stream.close()
    blank.close()
Ejemplo n.º 2
0
def cropAndRotateFile(inFilename, outFilename, opts=None):
    """
    """
    reader, writer, stream = _prepFiles(inFilename, outFilename)
    pf = booklet.pechaFactory(reader.getNumPages())
    for index, block in enumerate(pf.getBlockList()):
        page = cropPDFPage(reader.getPage(index))
        if block.orientation == const.UPSIDEDOWN:
            page.rotateClockwise(180)
        writer.addPage(page)
    writer.write(stream)
    stream.close()