Saltar al contenido

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

Esta noticia fue evaluado por expertos para asegurar la exactitud de este tutorial.

Solución:

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

Puedes descargar el GSPRINT en AQUÍ

Puedes descargar la GPL de Ghostscript 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 64bits AQUÍ

Espero que esto ayude.

Aquí hay una manera de imprimir silenciosamente un pdf en el mismo directorio que su secuencia de comandos 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á utilizando 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 y 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 *