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.