Programmatically Print a PDF File - Specifying Printer

14,210

Solution 1

There's an underdocumented printto verb which takes the printer name as a parameter (enclosed in quotes if it contains spaces).

import tempfile
import win32api
import win32print

filename = tempfile.mktemp (".txt")
open (filename, "w").write ("This is a test")
win32api.ShellExecute (
  0,
  "printto",
  filename,
  '"%s"' % win32print.GetDefaultPrinter (),
  ".",
  0
)

snippet from Ja8zyjits's link

Solution 2

Looks like bluish left a comment about this but did not leave an answer.

Install Ghostprint http://pages.cs.wisc.edu/~ghost/gsview/gsprint.htm

Then use the command in the question

Print PDF document with python's win32print module?

Solution 3

please refer this link for further details

import tempfile
import win32api
import win32print

filename = tempfile.mktemp (".txt")
open (filename, "w").write ("This is a test")
win32api.ShellExecute (
  0,
  "print",
  filename,
  #
  # If this is None, the default printer will
  # be used anyway.
  #
  '/d:"%s"' % win32print.GetDefaultPrinter (),
  ".",
  0
)

This shall work please refer the link provided for further details.

Share:
14,210
Greg
Author by

Greg

I'm an avid programmer, web developer and electronics enthusiast. Here's my gift to Python hackers. And you can see everything I'm up to here.

Updated on June 08, 2022

Comments

  • Greg
    Greg about 2 years

    I have a requirement to print an existing PDF file from a Python script.

    I need to be able to specify the printer in the script. It's running on Windows XP.

    Any ideas what I could do?

    This method looks like it would work except that I cannot specify the printer:

    win32api.ShellExecute (
      0,
      "print",
      filename,
      None,
      ".",
      0
    )