Saltar al contenido

PDF de impresión silenciosa de Python en una impresora específica

Solución:

Finalmente, después de horas y horas de buscar los archivos correctos, he encontrado la respuesta a mi problema.

Puede descargar GSPRINT en AQUÍ

Puede descargar Ghostscript GPL en AQUÍ

Con estos archivos extraídos en su PC (Windows) puede imprimir su PDF con este comando

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)

El GhostScript también se puede encontrar en la página oficial AQUÍ

Encontré el gsprint.exe para 64 bits AQUÍ

Espero que esto ayude.

Aquí hay una forma de imprimir silenciosamente un pdf en el mismo directorio que su script de Python sin gsprint y sin win32api. Permite una mayor personalización de GhostScript, como elegir ancho / alto, etc.

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)

Si está usando la versión de 32 bits de GhostScript, entonces usaría gswin32c

El siguiente código bloqueará la tarea actual

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

y matar al lector después de imprimir la ayuda no bloqueará la tarea actual

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

pero también cerrará otros archivos pdf.

Si no puede usar gsprint, use el comando acrobat

import win32print
import subprocess
import time
pdf_file="D:d1d1.pdf"
acrobat="C:Program Files (x86)AdobeAcrobat Reader DCReaderAcroRd32.exe"
name = win32print.GetDefaultPrinter()
cmd = '"{}" /n /o /t "{}" "{}"'.format(acrobat, pdf_file, name)
for i in range(10)):
    proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

No bloqueará la tarea actual ni cerrará los otros archivos pdf.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *