gsprint.exe непригоден для использования, так как ему нужен регистрационный номер - PullRequest
0 голосов
/ 03 марта 2020

Я установил ghostscript и gsview. После установки доступна команда gsprint.exe, которая позволяет программно распечатать файл pdf следующим образом:

from win32 import win32print
import subprocess

if __name__ == "__main__":

    printer_name = "Microsoft Print to PDF"

    print("Printer: %s" % (printer_name))

    win32print.SetDefaultPrinter(printer_name)


    p = subprocess.Popen([r"C:\Program Files\Ghostgum\gsview\gsprint.exe", r"C:\Users\xralf\Desktop\to_print\document1.pdf"],
                         stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    stdout, stderr = p.communicate()
    print (stdout)
    print (stderr)

Но использовать его невозможно, потому что ghostview нужен регистрационный номер, а регистрационные номера больше не доступны (согласно их странице). Знаете ли вы какой-нибудь альтернативный способ печатать файл pdf программным способом в Windows 10?

Ответ здесь устарел.

1 Ответ

1 голос
/ 03 марта 2020

Ghostview не нужен регистрационный номер, он просто всплывает, если у вас его нет. gsprint.exe даже этого не делает.

Я только что попробовал это локально. У меня нет регистрационного номера для gsview, и gsprint.exe прекрасно работает для меня. С чего вы взяли, что вам нужен регистрационный номер?

Следует отметить, что с последними версиями Ghostscript gsprint.exe не работает, по-видимому, потому что Ghostscript читает или записывает временный файл, а недавние изменения в системе безопасности означают, что этот подход не сработает. Вы можете обойти это, установив параметр -dNOSAFER, который я не рекомендую, поскольку он отключает защиту.

Вместо этого вы можете напрямую использовать Ghostscript, выбрав устройство mswinpr2, которое печатает на Windows принтеры, сначала создавая контекст устройства, подходящий для выбранного pritner, отображая содержимое в растровое изображение, перетаскивая растровое изображение в контекст устройства, а затем сообщая контексту устройства для печати (я считаю, что это, по сути, то, что gsprint.exe) в любом случае)

Кроме того, вы могли бы установить CUPS на WSL, я должен подумать.

Также исходники gsprint все еще доступны как часть gsview 5.0 с здесь , так что вы можете всегда могу изменить их самостоятельно. Вы даже можете расширить его, добавив временный файл в список для чтения / записи (--permit_file_read и --permit_file_write) в Ghostscript, чтобы вам не приходилось использовать -dNOSAFER.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...