添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

由于工作需求,需要按照固定顺序打印大量的PDF文件.

第一时间想到的就是用Python的模块来解决.查阅了大量的文章之后,开始了我的测试之旅…

一.第一种方案.ghostscript与gsprint打印.代码如下:

def print_pdf(x):
    GHOSTSCRIPT_PATH = r'C:\workC\gs9.54.0\bin\gswin64c.exe'
    GSPRINT_PATH = r'C:\workC\Ghostgum\gsview\gsprint.exe'
    # YOU CAN PUT HERE THE NAME OF YOUR SPECIFIC PRINTER INSTEAD OF DEFAULT
    currentprinter = win32print.GetDefaultPrinter()
    print(x)
    win32api.ShellExecute(
        'open', \
        GSPRINT_PATH, \
        '-ghostscript \
        "' + GHOSTSCRIPT_PATH + '"  \
        -printer \
        "' + currentprinter + '" \
        "'+ x +'" ', \
        '.', \
x:是需要打印PDF的绝对路径
需要安装ghostscript以及gsprint.
查找了很多个地方才发现gsprint原来是gsview的一个组件.特此说明,大家避免被坑.

下载链接:
ghostscript:https://download.csdn.net/download/

由于工作需求,需要按照固定顺序打印大量的PDF文件.第一时间想到的就是用Python的模块来解决.查阅了大量的文章之后,开始了我的测试之旅…一.第一种方案.ghostscript与gsprint打印.代码如下:def print_pdf(x): GHOSTSCRIPT_PATH = r'C:\workC\gs9.54.0\bin\gswin64c.exe' GSPRINT_PATH = r'C:\workC\Ghostgum\gsview\gsprint.exe' # YOU
实现思路:导入相关工作模块->通过对话框形式选择待打印文件文件夹->自定义打印机空闲检查函数和打印函数->依次取出文件夹中的文件并在打印机空闲时打印。 注意事项:此代码运行需要网络中有正常可用的打印机,运行时可以兼容文件大小差异很大的文件。 确保打印是按照顺序来的核心代码如下: #定义检查函数,用于确保文件按照顺序打印 printer = win32print.GetDefaultPrinter() handle=win32print.OpenPrinter(printer) tasks=win32print.EnumJobs(handle,0,-1,1)#按顺序打印的核心 if tasks:#发现打印队列中有任务就持续sleep直到打印完成 #print("打印机中有任务阻塞,请稍等... ...") time.sleep(2) tasks=win32print.EnumJobs(handle,0,-1,1) 完整代码请下载附件查看。
def print_pdf(self, pdf_file_name): """ 静默打印pdf :param pdf_file_name: :return: "&
1. 相关介绍 Python 操作 PDF 会用到两个库,分别是:PyPDF2 和 pdfplumber 其中 PyPDF2 可以更好的读取、写入、分割、合并PDF文件,而 pdfplumber 可以更好的读取 PDF 文件中内容和提取 PDF 中的表格 对应的官网分别是: 由于这两个库都不是 Python 的标准库,所以在使用之前都需要单独安装 win+r 后输入 cmd 打开 command 窗口,依次输入如下命令进行安装: pip install PyPDF2 pip install pdfplum
import win32print printers=win32print.EnumPrinters(2) #关于EnumPrinters中的一些参数获得不同的嵌套元组,获得打印机的具体信息 print(printers) import tempfile import win32api import win32print filena... 返回了一个:message信息?而这个message还不是后端给的。 最让人生气的是。打开浏览器控制台,居然可以看到401以及后端给的message! 在多方求助以后,发现。打印error是没有用的,这个时候,应该打印error.response 然后你想要的status和code以及dada里面的数据都有了 pdf_file_paths = [ r"C:\Users\username\Documents\file1.pdf", r"C:\Users\username\Documents\file2.pdf", r"C:\Users\username\Documents\file3.pdf" # 设置打印参数 print_params = { "Flags": win32print.PRINT_WAITFORCOMPLETION, "DesiredAccess": win32print.PRINTER_ACCESS_USE, "JobName": "Python Print Job" # 打印PDF文件 for pdf_file_path in pdf_file_paths: # 构造打印命令行 print_command = f'"{pdf_file_path}" /p /h /n "{printer_name}"' # 执行打印命令行 os.system(print_command) 以上程序将默认打印机设置为系统默认打印机,如果需要打印到其他打印机,可以将`printer_name`变量设置为打印机名称。同时,程序会依次打印`pdf_file_paths`列表中的所有PDF文件,可以根据需要修改列表内容。程序使用`os.system`函数执行打印命令行,其中`/p`参数表示打印,`/h`参数表示隐藏打印窗口,`/n`参数表示指定打印机名称。最后,程序使用`win32print.PRINT_WAITFORCOMPLETION`参数等待打印完成,以确保程序不会在打印过程中退出。 调用本地打印机,打印PDF文件,要求:Python3.5+,仅支持win32平台,只支持PDF文件的打印 gswin64c.exe为Ghostscript打印程序安装后bin目录中的一个组件,下载地址:https://www.ghostscript.com/ :param cprinter: 调用的打印机 :param pdf: pdf文件的绝对路径 :return: if sys.platform == 'win32': args = [f"{os.path.dirname(__file__)}\\db\\gswin64c.exe", '-sDEVICE=mswinpr2', '-dBATCH', '-dNOPAUSE', '-dFitPage', f'-sOutputFile="%printer%{cprinter}"', f'"{pdf}"'] subprocess.run(args, encoding="utf-8", shell=True) [/code]