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)
正好有静默打印的需要,请问gsprint与gswin64c软件可以分享下吗? 顶555555555 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/ 外部工具可以内嵌到项目里面
我内嵌过chrome浏览器,jdk
不用依赖任何外部工具 我查到一个`PDFtoPrinter`,提供python接口 lbbas 发表于 2024-1-25 08:51
我查到一个`PDFtoPrinter`,提供python接口
这个属于第三方工具了{:1_937:}
页:
[1]