Skip to main content

Save pictures to PDF

Project description

pytest pylint release license pyversions format

Save pictures to PDF from the command line or from your Python programs.

Requirements

Python 3.6 or higher is required. The only third-party dependency is reportlab.

Installation

pip install pictureshow

As a command line tool

Usage:

usage: pictureshow [-h] [-p SIZE] [-L] [-m MARGIN] [-l LAYOUT] [-s] [-f]
                   [-q | -v] [-V]
                   PIC [PIC ...] PDF

positional arguments:
  PIC                   one or more input picture file paths
  PDF                   target PDF file path

optional arguments:
  -h, --help            show this help message and exit
  -p SIZE, --page-size SIZE
                        specify page size; default is A4
  -L, --landscape       force landscape orientation of page
  -m MARGIN, --margin MARGIN
                        set width of empty space around pictures; default is
                        72 points (1 inch)
  -l LAYOUT, --layout LAYOUT
                        specify grid layout of pictures on page; default is
                        1x1
  -s, --stretch-small   scale small pictures up to fit drawing area
  -f, --force-overwrite
                        save target file even if filename exists
  -q, --quiet           suppress printing to stdout
  -v, --verbose         provide details on files skipped due to error
  -V, --version         show program's version number and exit

Example 1

Save a single picture to PDF.

$ pictureshow pics/mandelbrot.png mandelbrot.pdf
Saved 1 picture to '/.../mandelbrot.pdf'

Result:

https://raw.githubusercontent.com/mportesdev/pictureshow/master/pics/sample_pdf_mandelbrot.png

Example 2

Select pictures using a glob pattern [1], set page to landscape Letter-sized [2].

$ pictureshow pics/plots/gauss* gauss.pdf -LpLETTER
Saved 2 pictures to '/.../gauss.pdf'

Result:

https://raw.githubusercontent.com/mportesdev/pictureshow/master/pics/sample_pdf_gauss.png

Example 3

Select pictures using a glob pattern, set half-inch margin and layout of 1x3 pictures per page.

$ pictureshow --margin=36 --layout=1x3 pics/*alpha.png alpha_pngs.pdf
Saved 6 pictures to '/.../alpha_pngs.pdf'

Result:

https://raw.githubusercontent.com/mportesdev/pictureshow/master/pics/sample_pdf_alpha.png

As a Python library

Using the PictureShow class:

from pictureshow import PictureShow

pic_show = PictureShow('pics/mandelbrot.png', 'pics/mandelbrot.jpg')
pic_show.save_pdf('pictures.pdf')

Result:

https://raw.githubusercontent.com/mportesdev/pictureshow/master/pics/sample_pdf_pictures.png

Using the pictures_to_pdf shortcut function:

from pictureshow import pictures_to_pdf

list_of_pictures = ['pics/mandelbrot.png', 'pics/mandelbrot.jpg']
pictures_to_pdf(*list_of_pictures, pdf_file='pictures.pdf')

Please note that unlike the command line interface, pdf_file must be specified as a keyword argument.

Another example, demonstrating all available keyword-only arguments:

from pathlib import Path

from pictureshow import pictures_to_pdf

list_of_pictures = sorted(Path.cwd().glob('pics/oldies/*/*'))
pictures_to_pdf(
    *list_of_pictures,
    pdf_file='oldies.pdf',
    page_size='A5',
    landscape=True,
    margin=18,
    layout=(3, 3),
    stretch_small=True,
    force_overwrite=True
)

Result:

https://raw.githubusercontent.com/mportesdev/pictureshow/master/pics/sample_pdf_oldies.png

Changelog

version 0.3.2

The page_size and layout arguments can now be specified either by a string (just like in the command line interface) or by a sequence of two numbers. For example, page_size='LETTER', layout='2x3' is equivalent to page_size=(72 * 8.5, 72 * 11), layout=(2, 3).

version 0.3.6

The pdf_file argument can now be specified either by a string (just like in the command line interface) or by a path-like object.

version 0.4.0

pdf_file is now a required keyword-only argument of the pictures_to_pdf function. All positional arguments are treated as paths to input picture files.

Footnotes

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

pictureshow-0.5.0-py3-none-any.whl (8.3 kB view hashes)

Uploaded Python 3

Supported by

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