Skip to main content

TeX file formatting

Project description


CI Documentation Status Conda Version PyPi release

Simple module to combine (concatenate) PDF-files using GhostScript:

Command-line script

pdfcombine [options] <files>...

Python module

import pdfcombine



This library is free to use under the MIT license. Any additions are very much appreciated, in terms of suggested functionality, code, documentation, testimonials, word-of-mouth advertisement, etc. Bug reports or feature requests can be filed on GitHub. As always, the code comes with no guarantee. None of the developers can be held responsible for possible mistakes.

Download: .zip file | .tar.gz file.

(c - MIT) T.W.J. de Geus (Tom) | | |

Getting pdfcombine

Using conda

conda install -c conda-forge pdfcombine

This will install all necessary dependencies.

Using PyPi

pip install pdfcombine

This will install the necessary Python modules, but not GhostScript.

From source

# Download pdfcombine
git checkout
cd pdfcombine

# Install
python -m pip install .

This will install the necessary Python modules, but not GhostScript.


Basic usage

The usage is as follows (see pdfcombine --help):

    pdfcombine [options] <files>...

    -y, --yaml              Read input files (and settings) from a YAML-file.
        --openleft          Enforce that each 'chapter' starts on an even page.
        --openright         Enforce that each 'chapter' starts on an odd page.
        --title=<arg>       Set the title of the output PDF.
        --author=<arg>      Set the author of the output PDF.
        --no-bookmarks      Do include bookmarks to the first page of each document.
        --add-ps=<arg>      Add commands to the generated PostScript script.
        --ps=<arg>          Overwrite the automatically generated PostScript script.
        --no-ps             Do not run any PostScript script (to edit meta-data).
    -o, --output=<arg>      Name of the output file. [default: binder.pdf]
    -f, --force             Force overwrite of existing output-file.
    -s, --silent            Do not print any progress.
        --verbose           Verbose all commands.
    -h, --help              Show help.
        --version           Show version.

Meta-data using PostScript

By default a PostScript script is used to set the meta-data of the output PDF-file. In particular, the output PDF gets a table of contents with bookmarks to the first page of each input 'document' and the input filename at title. To customise these titles and add meta-data use a YAML input file and/or customise the default PostScript script.

Manipulate PostScript script from command-line



Set title of the output PDF.


Set the author of the output PDF.


Switch-off bookmarks added for each 'document'.


Add lines of PostScript code to the automatically generated script.

Manually specify


Set PostScript script (overwrites automatically generated script).



Switch-off the use of a PostScript script.

Customise meta-data using YAML input file

To include custom bookmarks a YAML input file can be used, e.g.:

    - file: 1.pdf
      title: First file
    - file: 2.pdf
      title: Second file

openleft: True
title: Binder
author: Tom de Geus
output: binder.pdf

Run pdfcombine as follows:

  pdfcombine -y input.yaml

All PDFs have the specified in the YAML file: no additional PDFs can be added from the command-line.

As observed the files field contains all input files (in the correct order) and the bookmark titles. In addition, any of the command-line options (long name without --) can be included. Note that specifying them will overwrite the corresponding command-line option. To use with automatic bookmarks (i.e. filenames), the above input file can be shortened to:

    - 1.pdf
    - 2.pdf

openleft: True
title: Binder
author: Tom de Geus
output: binder.pdf

Usage from Python

Basic usage

import pdfcombine


  • files (<str> | <list<str>>)

    List of PDF files to combine.

  • output (<str>)

    Name of output file (overwritten if exists).


  • openleft (False | True)

    Make sure each 'document' begins on a left-page.

  • openright (False | True)

    Make sure each 'document' begins on a right-page.

  • meta (True | False)

    Write meta-data using a PostScript script (see below for options: ps, add_ps, bookmarks, title, author).

  • ps (<str>)

    If specified the automatically generated PostScript script is overwritten with the specified script.

  • add_ps (<str>)

    Append generated/specified PostScript script with the specified script.

  • bookmarks (True | False | <list<str>>)

    If True the filenames are used as bookmarks in the automatically generated PostScript script. One can customise the bookmarks by specifying a list with one label per file.

  • title (<str>)

    Specify PDF title. Defaults to "Binder".

  • author (<str>)

    Specify PDF author. Defaults to "pdfcombine".

  • verbose (False | True)

    Verbose all commands and their output.

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

pdfcombine-1.1.5.tar.gz (11.9 kB view hashes)

Uploaded Source

Built Distribution

pdfcombine-1.1.5-py3-none-any.whl (9.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