相关文章推荐
愤怒的风衣  ·  能否用JavaScript ...·  1 月前    · 
俊秀的啄木鸟  ·  如何用Python构建卡车模拟器的自动驾驶系 ...·  1 月前    · 
行走的豆芽  ·  杭州市锦绣幼儿园·  11 月前    · 
面冷心慈的手套  ·  重要新闻_中华人民共和国外交部·  11 月前    · 
没有腹肌的墨镜  ·  延边大学2019—2020学年度信息公开工作 ...·  1 年前    · 
乐观的滑板  ·  工信部王建伟:工业互联网平台+园区打通平台落 ...·  1 年前    · 
爱听歌的夕阳  ·  windows powershell 命令 ...·  2 年前    · 
Code  ›  Python静默将PDF打印到特定打印机开发者社区
ghostscript pdf pdf打印机 python
https://cloud.tencent.com/developer/ask/sof/189209
斯文的小狗
2 年前
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
提问
问 Python静默将PDF打印到特定打印机
Stack Overflow用户
提问于 2014-11-29 04:38:13
EN

我有一个PDF文档,我想用我的python应用程序打印它。

我已经在 here (Print PDF document with python's win32print module?) 中尝试过该解决方案,但是当我安装Ghostscript9.15时,它没有 gsprint.exe

我使用的方式是使用命令 os.startfile('PDFfile.pdf', "print") ,但它打开默认的查看器(我的是Adobe Reader),打印后它仍然是打开的,试图用 os.system("TASKKILL /F /IM AcroRD32.exe") 杀死进程会杀死其他打开的窗口,我不想要它。

使用下一个命令,它也会打印出来,但它也会让Adobe Reader打开

currentprinter = win32print.GetDefaultPrinter()
win32api.ShellExecute(0, "print", 'PDFfile.pdf', '/d:"%s"' % currentprinter, ".", 0)

我也看过 this answer ,但他们建议再次使用 gsprint.exe

谁有 gsprint.exe 文件或其他解决方案?

注意: 当我使用另一个默认程序打开 '(31, 'ShellExecute', 'A device attached to the system is not functioning.')' 或Windows Reader等PDF文件时,我总是在使用 startfile 命令执行上述 '(31, 'ShellExecute', 'A device attached to the system is not functioning.')' 或 [Error 1155] No application is associated with the specified file for this operation: 'PDFfile.pdf' 命令时出现异常。

8 37.8K 0 票数 18
EN
python
pdf
printing

回答 8

Stack Overflow用户

回答已采纳

发布于 2014-11-29 06:24:46

经过几个小时的搜索,我终于找到了问题的答案。

您可以在 HERE 中下载GSPRINT

您可以在 HERE 中下载Ghostscript GPL

在您的PC (Windows)中提取这些文件后,您可以使用以下命令打印您的PDF

GHOSTSCRIPT_PATH = "C:\\path\\to\\GHOSTSCRIPT\\bin\\gswin32.exe"
GSPRINT_PATH = "C:\\path\\to\\GSPRINT\\gsprint.exe"
# YOU CAN PUT HERE THE NAME OF YOUR SPECIFIC PRINTER INSTEAD OF DEFAULT
currentprinter = win32print.GetDefaultPrinter()
win32api.ShellExecute(0, 'open', GSPRINT_PATH, '-ghostscript "'+GHOSTSCRIPT_PATH+'" -printer "'+currentprinter+'" "PDFFile.pdf"', '.', 0)

还可以在官方页面 HERE 中找到GhostScript

我找到了64位 HERE 的gsprint.exe

我希望这能帮到你。

票数 22
EN

Stack Overflow用户

发布于 2018-07-13 20:40:20

这里有一种方法,可以在不使用 gsprint 和 win32api 的情况下,在与python脚本相同的目录中静默打印pdf。它允许更多的GhostScript定制,比如选择宽度/高度等。

import os
import subprocess
import sys
if sys.platform == 'win32':
    args = '"C:\\\\Program Files\\\\gs\\\\gs9.23\\\\bin\\\\gswin64c" ' \
           '-sDEVICE=mswinpr2 ' \
           '-dBATCH ' \
           '-dNOPAUSE ' \
           '-dFitPage ' \
           '-sOutputFile="%printer%myPrinterName" '
    ghostscript = args + os.path.join(os.getcwd(), 'myFile.pdf').replace('\\', '\\\\')
    subprocess.call(ghostscript, shell=True)

如果您使用的是32位版本的GhostScript,那么您应该使用 gswin32c

票数 2
EN

Stack Overflow用户

发布于 2019-10-10 14:52:36

下面的代码将阻塞当前任务

for i in range(10):
    currentprinter = win32print.GetDefaultPrinter()
    win32api.ShellExecute(0, "print", 'PDFfile.pdf', '/d:"%s"' % currentprinter, ".", 0)

并且在打印帮助后杀死阅读器不会阻止当前任务

os.system("TASKKILL /F /IM AcroRD32.exe") 

但它也会关闭其他pdf文件。

如果不能使用gsprint,可以使用acrobat命令

import win32print
import subprocess
import time
 
推荐文章
愤怒的风衣  ·  能否用JavaScript UI替换Python程序中的Tkinter UI?跨域问题与架构方案咨询
1 月前
俊秀的啄木鸟  ·  如何用Python构建卡车模拟器的自动驾驶系统?ETS2LA技术深度解析
1 月前
行走的豆芽  ·  杭州市锦绣幼儿园
11 月前
面冷心慈的手套  ·  重要新闻_中华人民共和国外交部
11 月前
没有腹肌的墨镜  ·  延边大学2019—2020学年度信息公开工作报告-延边大学 信息公开
1 年前
乐观的滑板  ·  工信部王建伟:工业互联网平台+园区打通平台落地“最后一公里”_数字化_余晓晖_产业
1 年前
爱听歌的夕阳  ·  windows powershell 命令 修改文件/文件夹时间_文件更改修订日期get-childitem -recurse_EchoCoder的博客-CSDN博客
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号