吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 582|回复: 7
收起左侧

[求助] python使用PDF静默打印

[复制链接]
Leon121 发表于 2024-1-24 15:47
请教各位大神: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
 楼主| 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/

免费评分

参与人数 1吾爱币 +3 热心值 +1 收起 理由
wkdxz + 3 + 1 热心回复!

查看全部评分

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接口


这个属于第三方工具了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-16 14:03

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表