python 批量打印PDF

有一批PDF文件,好几百个,每个只打印第2,3页,双面打印。

网上搜索一波,方案如下:

安装Ghostscript,GhostView,使用gsprint命令打印pdf文件。

gsprint命令参数说明:

     "-dQUIET",    安静的意思,指代执行过程中尽可能少的输出日志等信息。(也可以简写为“-q”)
     "-dNOSAFER",    通过命令行运行
     "-dBATCH",    执行到最后一页后退出
     "-dNOPAUSE",    每一页转换之间没有停顿
     "-dNOPROMPT",    没有相关提示
     "-dFirstPage=1",    从第几页开始
     "-dLastPage=5",     到第几页结束
     "-sDEVICE=pngalpha",    转换输出的文件类型装置,默认值为x11alpha
     "-g720x1280",    图片像素(-g<width>x<height>),一般不指定,使用默认输出
     "-r300",    图片分辨率(即图片解析度为300dpi),默认值好像是72(未测试证实)
     "-sOutputFile=/opt/shanhy/error1png/%d.png",    图片输出路径,使用%d或%ld输出页数

比如打印c.pdf第2,3页,命令如下

gsprint -dFirstPage=2 -dLastPage=3 c.pdf

 

大部分pdf只打印第2,第3页,双面打印,所以用python控制批量打印所有pdf的第二页,暂停,提示翻页,然后批量打印第三页。

完整代码如下

# -*- coding: utf-8 -*-
import os
import time

def print_pdf(pdf_file_name, page):
    """
        静默打印pdf
        :param pdf_file_name
        :page  打印第几页
        :return:
        """
    cmd = 'gsprint -dFirstPage=%s -dLastPage=%s %s' % (page, page, pdf_file_name)
    print(cmd)
    p = os.popen(cmd)
    time.sleep(3)
    print(p.read())
    
if __name__ == '__main__':
    curr_path = os.getcwd()
    fl = os.listdir(curr_path)
    for i in range(2,4):
        print(i)
        for f in fl:
            if 'pdf' in f.lower():
                print_pdf(f, i)
        a = raw_input('请翻转打印纸')

 

ghostscript下载地址:

https://www.ghostscript.com/download.html

 

ghostview下载地址:

http://www.onlinedown.net/soft/6218.htm

 

posted @ 2019-03-31 14:45  onelang  阅读(8284)  评论(0编辑  收藏  举报