开始使用windows下的福昕pdf阅读器进行打印,虽然福昕阅读器提供了在一页纸上进行双页,4页打印功能,并且也提供了偶数页、奇数页分别打印的功能但是没有这种对折顺序的打印模式。
后来安装了fineprint虚拟打印机,fineprint倒是提供了对折双面打印模式,叫做booklet模式。不过这种模式是从中缝将所有纸页装订到一起的,适合做小册子。
于是我转到了ubuntu平台,ubunbtu平台的打印功能本身就提供了在一页纸上进行双页,4页打印功能,并且也提供了偶数页、奇数页分别打印的功能。和福昕阅读器一样,没有提供对折打印模式。
怎么办呢?老婆的事情就是大事情,我操起了pdftk,首先将这本书分解成了一个一个的单页pdf文件,一个有684个文件。文件名如pg_0001.pdf,pg_0002.pdf,pg_0003.pdf……
然后,怎么把这些页面重新组合起来呢?刚好这两天在翻看python,就拿python写个脚本吧!脚本如下:
代码: 全选
# -*- coding:utf-8 -*-
# 已经将一个PDF文件分割成一个一个单页文件,现在想让按照双面对折的方式打印
# 也就是一面按照 1,4,5,8,9 ,12
# 另一面按照 2,3,6,7,10,11 的顺序排列
#脚本生成了两个PDF文件,分别对应了正反两个页面。因为一般激光/喷墨打印机出纸后
#是打印面向下倒序叠着出纸的,所以脚本将第二个PDF成倒序排列。
import os
#cmdstr='pdftk pg_0001.pdf pg_0004.pdf cat output out1.pdf'
#正序生成第一面打印资料
fn=''
for i in range (1, 684,4):
fn1='pg_'+str(i).rjust(4,'0')+'.pdf'
fn2='pg_'+str(i+3).rjust(4,'0')+'.pdf'
fn=fn+' '+fn1+' '+fn2
cmdstr='pdftk '+fn+' cat output out1.pdf'
print cmdstr
os.system(cmdstr)
#逆序生成另一面的打印资料
fn=''
for i in range (682,-2,-4): #这个地方如果设成range(682,2,-4)则无法执行到i=2
fn1='pg_'+str(i).rjust(4,'0')+'.pdf'
fn2='pg_'+str(i+1).rjust(4,'0')+'.pdf'
fn=fn+' '+fn2+' '+fn1 #这里将fn2置于fn1之前
cmdstr='pdftk '+fn+' cat output out2.pdf'
print cmdstr
os.system(cmdstr)