带有ReportLab的小册子页面布局

问题描述 投票:0回答:1

我有一个Python程序,它使用ReportLab生成PDF文件,我想生成另一个PDF,该PDF的格式是将每一页切成两半,然后折叠并装订在一起形成小册子。

例如,如果我当前的文档包含A,B,C,D,E,F,G和H页,我希望新文档具有两面可以双面打印的页面,如下所示:] >

BG|HA
DE|FC

我已经看到此顺序被称为4-up或拼版。

我的打印机可以选择在每张纸上打印四页,但是不会重新排序页面。如果我使用该设置打印当前文档并进行双面打印,它将显示为:

AB|EF
CD|GH

我的首选是生成一个PDF,每张纸四页,如图所示。如果我不知道该怎么办,下一个最好的办法就是生成一个带有重新排序页面的PDF,以便我的打印机可以在每张纸上打印四页。换句话说,将页面重新排序为B,G,D,E,H,A,F和C。

这是一个可打印八页的代码示例:

from subprocess import call

from reportlab.lib import pagesizes
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.lib.units import inch
from reportlab.platypus import SimpleDocTemplate, Paragraph


def main():
    pdf_path = 'booklet.pdf'
    doc = SimpleDocTemplate(pdf_path,
                            pagesize=pagesizes.letter,
                            topMargin=0.625*inch,
                            bottomMargin=0.625*inch)
    styles = getSampleStyleSheet()
    paragraph_style = styles['Normal']
    print(paragraph_style.fontSize, paragraph_style.leading)
    paragraph_style.fontSize = 300
    paragraph_style.leading = 360
    story = []
    for text in 'ABCDEFGH':
        flowable = Paragraph(text, paragraph_style)
        story.append(flowable)

    doc.build(story)

    # call(["evince", pdf_path])  # launch PDF viewer


main()

我有一个Python程序,可通过ReportLab生成PDF文件,我想生成另一个PDF,该PDF的格式为将每一页切成两半,然后折叠并装订在一起形成小册子。 ...

python reportlab page-layout
1个回答
0
投票

由于this question,我可以看到在实际将画布页面写入文档之前如何收集它们。我添加了一些代码来重新排序它们,现在我可以使用我的额外打印机选项将它们打印每页4页。

© www.soinside.com 2019 - 2024. All rights reserved.