Leon121 发表于 2024-1-24 15:47

python使用PDF静默打印

请教各位大神:python使用PDF静默打印


试过很多方法了,一般都是基于第三方库和第三方工具,
痛点:
1.第三方库,存在收费,可以打印。
2.第三方工具,无法内嵌自己的项目。
有没有不依赖第三方工具或者收费库的免费打印的方式??


方法一:使用win32print库与win32api库报错


报错内容如下:


Traceback (most recent call last):
    win32api.ShellExecute(0, "print", file_path, None, ".", 0)
pywintypes.error: (31, 'ShellExecute', '连到系统上的设备没有发挥作用。')


源代码如下:


import win32print
import win32api
import os
def print_pdf(file_path, printer_name=None):
    # 如果未指定打印机,则使用默认打印机
    if printer_name is None:
      printer_name = win32print.GetDefaultPrinter()
    # 打印属性,此处为默认设置
    printer_attribs = {"DesiredAccess": win32print.PRINTER_ALL_ACCESS}
    # 打开打印机
    h_printer = win32print.OpenPrinter(printer_name, printer_attribs)
    # 获取文档属性
    doc_info = (os.path.basename(file_path), None, None)
    # 开始打印任务
    job_id = win32print.StartDocPrinter(h_printer, 1, doc_info)
    # 开始打印任务的一个页面
    win32api.ShellExecute(0, "print", file_path, None, ".", 0)
    # 结束打印任务
    win32print.EndDocPrinter(h_printer)
# 使用示例
file_path = "PDFFILE\\CRYSTAL_BUNDLE_NO.pdf"
print_pdf(file_path)



方法二:使用外部工具gsprint与gswin64c,可以静默打印但依赖外部工具,对于项目而言不合理,



import win32api
import win32print
def print_pdf_with_gsprint(pdf_file_name, printer_name, gsprint_path, ghostscript_path):
    win32api.ShellExecute(
      0,
      'open',
      gsprint_path,
      f'-ghostscript "{ghostscript_path}" -printer "{printer_name}" -dPDFFitPage "{pdf_file_name}"',
      '.',
      0
    )
# 使用示例
pdf_path = r"PDFFILE\CRYSTAL_BUNDLE_NO.pdf"# 使用原始字符串,替换为你的PDF文件路径
printer_name = "FUJI XEROX DocuPrint CM315/318 z"# 打印机名称
gsprint_path = "gsprint.exe"# 替换为你的Gsprint的实际路径
ghostscript_path = "gswin64c.exe"# 替换为你的Ghostscript的实际路径
print_pdf_with_gsprint(pdf_path, printer_name, gsprint_path, ghostscript_path)

wkdxz 发表于 2024-1-24 16:09

正好有静默打印的需要,请问gsprint与gswin64c软件可以分享下吗?

Leon121 发表于 2024-1-24 16:12

ckm97 发表于 2024-1-24 16:16

顶555555555

Leon121 发表于 2024-1-24 16:21

wkdxz 发表于 2024-1-24 16:09
正好有静默打印的需要,请问gsprint与gswin64c软件可以分享下吗?

可以的,
GhostView包含gsprint.exe
https://www.xitongzhijia.net/soft/186736.html
Ghostscrip包含tgswin64c.exe
https://ghostscript.com/releases/

ajxzl 发表于 2024-1-24 17:40

外部工具可以内嵌到项目里面
我内嵌过chrome浏览器,jdk
不用依赖任何外部工具

lbbas 发表于 2024-1-25 08:51

我查到一个`PDFtoPrinter`,提供python接口

Leon121 发表于 2024-1-26 16:08

lbbas 发表于 2024-1-25 08:51
我查到一个`PDFtoPrinter`,提供python接口

这个属于第三方工具了{:1_937:}
页: [1]
查看完整版本: python使用PDF静默打印