Skip to main content

Add your description here

Project description

Print Dog

Watch a directory and automatically print PDF files as soon as they finish downloading.

Install

Install directly from the source checkout (editable):

pip install -e .

Once published to PyPI, anyone can install with:

pip install print-dog

Usage

Run the watcher with the console script that gets installed:

print-dog /path/to/watch --printer My_Printer

The folder argument is optional; if omitted the watcher monitors ~/Downloads. Use --log-level DEBUG for verbose logging.

If you omit --printer, the system default printer is used. Set it via lpoptions -d <printer-name> or list printers with lpstat -p.

Windows + SumatraPDF

To avoid per-user paths when using SumatraPDF:

print-dog "C:\Users\%USERNAME%\Downloads" --use-sumatra

--use-sumatra searches the common installation folders (%LOCALAPPDATA%, %PROGRAMFILES%, etc.) or the path pointed to by the SUMATRAPDF_PATH environment variable. Override the location or CLI flags when needed:

  • --sumatra-path "C:\Custom\SumatraPDF\SumatraPDF.exe"
  • --sumatra-args "-print-to \"Office Printer\" -silent"

Filter by filename

Limit processing to PDFs whose names start with specific prefixes:

print-dog --allow-prefix Invoice --allow-prefix Statement

Only files beginning with Invoice or Statement will be printed. Supply --allow-prefix multiple times to add prefixes.

Slow downloads

The watcher waits for a PDF to stabilise before printing. Tweak the behaviour when downloads are large or networks are slow:

print-dog --download-timeout 1200 --stable-checks 6 --poll-interval 1.5
  • --download-timeout (seconds) controls the maximum time to wait.
  • --stable-checks is the number of consecutive unchanged size checks required.
  • --poll-interval (seconds) adjusts how often the file size is checked.
  • Temporary files such as .crdownload or .part are ignored until they disappear, so browsers that rename at the end (Chrome, Edge, Firefox) are handled gracefully.

Testing without a printer

  • Use --dry-run to simulate printing while keeping the watcher logic intact.

  • Or provide a custom command that receives the file path, e.g.:

    print-dog --print-command "echo printing {file}"
    

Environment variables and ~ are expanded automatically inside --print-command, so Windows users can rely on %LOCALAPPDATA%\SumatraPDF\SumatraPDF.exe.

Building a distribution

Use python -m build (requires pip install build) to produce source and wheel distributions that can be uploaded to PyPI with twine upload dist/*. The resulting package installs the print-dog command on macOS, Linux, and Windows.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

print_dog-0.1.2.tar.gz (6.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

print_dog-0.1.2-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page