我有一个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的格式为将每一页切成两半,然后折叠并装订在一起形成小册子。 ...
由于this question,我可以看到在实际将画布页面写入文档之前如何收集它们。我添加了一些代码来重新排序它们,现在我可以使用我的额外打印机选项将它们打印每页4页。