Skip to main content

Utility to perform commands on PDF files

Project description

PDFCMD - Utility to Perform Commands on PDF Files

PyPi AUR

This is a Linux command line utility to perform commands on PDF files. It uses the pypdf library. The following commands are presently implemented, each as an independent plugin.

The latest documentation and code is available at https://github.com/bulletmark/pdfcmd.

Usage

Type pdfcmd or pdfcmd -h to view the usage summary:

usage: pdfcmd [-h] {cat,help,info,pages} ...

Utility to perform commands on PDF files.

options:
  -h, --help            show this help message and exit

Commands:
  {cat,help,info,pages}
    cat                 Concaternate selected pages of one or more PDF files
                        into a single file.
    help                Show help/usage for this utility.
    info                Show PDF document information.
    pages               Output list of page labels/numbers, or total number of
                        pages.

Type pdfcmd <command> -h to see specific help/usage for any individual command:

Command cat

usage: pdfcmd cat [-h] [-o OUTFILE] [-a] ...

Concaternate selected pages of one or more PDF files into a single file.

positional arguments:
  fileranges            Sequence of alternating file names and page ranges

options:
  -h, --help            show this help message and exit
  -o OUTFILE, --outfile OUTFILE
                        output file, default = stdout
  -a, --no-aliases      do not use aliases

Arguments are specified as a sequence of alternating file names and page
ranges:

  file1 pagerange1 file2 pagerange2 ..

Page ranges refer to the previously specified file and are specified in
Python "slice" notation, assuming each page is like an element in a
sequence, starting at 0.

For example, concatenate all of head.pdf, all but page seven of
content.pdf, and the last page of tail.pdf, producing output.pdf:

  pdfcmd cat -o output.pdf head.pdf content.pdf :6 7: tail.pdf -1

A file not followed by a page range means all pages of that file, for
example:

  pdfcmd cat chapter*.pdf >book.pdf

You can also assign a single "alias" character to a file at first use
and then use that alias later as shorthand. For example, output the
first page from document1.pdf, the first page of document2.pdf, then the
remaining pages from document1.pdf and document2.pdf:

  pdfcmd cat -o output.pdf a=document1.pdf 0 b=document2.pdf 0 a 1: b 1:

The alias can be any single lower or upper case letter.

Page range expression examples (remember, page indices start with zero):
      :     all pages.                   -1    last page.
      22    just the 23rd page.          :-1   all but the last page.
      0:3   the first three pages.       -2    second-to-last page.
      :3    the first three pages.       -2:   last two pages.
      5:    from the sixth page onward.  -3:-1 third & second to last.
  The third, "stride" or "step" number is also recognized.
      ::2       0 2 4 ... to the end.    3:0:-1    3 2 1 but not 0.
      1:10:2    1 3 5 7 9                2::-1     2 1 0.
      ::-1      all pages in reverse order.

Command info

usage: pdfcmd info [-h] file

Show PDF document information.

positional arguments:
  file        PDF file

options:
  -h, --help  show this help message and exit

Command pages

usage: pdfcmd pages [-h] [-c] file

Output list of page labels/numbers, or total number of pages.

positional arguments:
  file         PDF file

options:
  -h, --help   show this help message and exit
  -c, --count  just print the total count of pages

Command help

usage: pdfcmd help [-h]

Show help/usage for this utility.

options:
  -h, --help  show this help message and exit

Installation

Arch Linux users can install pdfcmd from the AUR. Python 3.8 or later is required. Note pdfcmd is on PyPI so just ensure that pipx is installed then type the following:

$ pipx install pdfcmd

To upgrade:

$ pipx upgrade pdfcmd

Command Line Tab Completion

Command line shell tab completion is automatically enabled on pdfcmd commands and options using argcomplete. You may need to first (once-only) activate argcomplete global completion.

License

Copyright (C) 2021 Mark Blakeney. This program is distributed under the terms of the GNU General Public License. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License at http://www.gnu.org/licenses/ for more details.

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

pdfcmd-1.11.tar.gz (8.2 kB view details)

Uploaded Source

Built Distribution

pdfcmd-1.11-py3-none-any.whl (8.6 kB view details)

Uploaded Python 3

File details

Details for the file pdfcmd-1.11.tar.gz.

File metadata

  • Download URL: pdfcmd-1.11.tar.gz
  • Upload date:
  • Size: 8.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.1.dev0+g94f810c.d20240510 CPython/3.12.4

File hashes

Hashes for pdfcmd-1.11.tar.gz
Algorithm Hash digest
SHA256 eda50024b38932748579855cbbda028c0d6447b3fa96e825a8bb0de46c8356f8
MD5 b72ebed033c90d4037010b9d92b9e849
BLAKE2b-256 6163ec7474b4fa493fbe7d5bf35f01bffc3de68ad50ad719db42a6314f61caa6

See more details on using hashes here.

File details

Details for the file pdfcmd-1.11-py3-none-any.whl.

File metadata

  • Download URL: pdfcmd-1.11-py3-none-any.whl
  • Upload date:
  • Size: 8.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.1.dev0+g94f810c.d20240510 CPython/3.12.4

File hashes

Hashes for pdfcmd-1.11-py3-none-any.whl
Algorithm Hash digest
SHA256 a6def1e80762c7e38aff06976b78f858aa1c7e4afe16375b972745e46f89d201
MD5 761e0075d74b5ba137b997bf6c199d05
BLAKE2b-256 3a9eef086b97bfee00ea22c33f1201750fe4f3ce57e614f22482919c13679b92

See more details on using hashes here.

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