Stitch together a PDF file from multiple sources in a declarative manner
Project description
pystitcher stitches your PDF files together, generating nice customizable bookmarks for you using a declarative input in the form of a markdown file. It is written in pure python and uses PyPDF3 for reading and writing PDF files.
Installation
You can install it easily using pipx:
pipx install pystitcher
The Wiki has Alternative Installation Instructions.
Description
pystitcher is a command line tool, with very few cli options:
usage: pystitcher [-h] [--version] [-v] [--cleanup | --no-cleanup] spine.md output.pdf Stitch PDF files together positional arguments: spine.md Input markdown file output.pdf Output PDF file optional arguments: -h, --help show this help message and exit --version show program's version number and exit -v, --verbose log more things --cleanup, --no-cleanup Delete temporary files (default: True)
Given this input:
existing_bookmarks: remove title: Complete Guide to the Personal Data Protection Bill author: Medianama keywords: privacy, surveillance, personal data protection subject: Personal Data Protection Bill # A Complete Guide to the Personal Data Protection Bill - [Cover](cover.pdf) # The Bills - [Personal Data Protection Bill, 2019](https://example.com/2019-bill.pdf) - [Personal Data Protection Bill, 2018](https://example.com/2018-bill.pdf) # Other key reading material - [Srikrishna Committee Report](2.a.pdf) - [Dvara Research's Personal Data Protection Bill](2.b.pdf) - [MP Shashi Tharoor's Data Protection Bill](2.c.pdf) - [MP Jay Panda's Data Protection Bill](2.d.pdf) - [SaveOurPrivacy.in bill](2.e.pdf) - [TRAI recommendations on privacy](2.f1.pdf) - [Comments on TRAI recommendations on privacy](2.f2.pdf)
Will generate a PDF with proper bookmarks:
And the correct metadata:
Title: Complete Guide to the Personal Data Protection Bill Subject: Personal Data Protection Bill Keywords: privacy, surveillance, personal data protection Author: Medianama Creator: pystitcher/1.0.0 Producer: pystitcher/1.0.0
Configuration options can be specified with Meta data at the top of the file.
Option |
Notes |
---|---|
fit |
Default fit of the bookmark. Can be overwritten per bookmark See wiki for more details. |
author |
PDF Author |
keywords |
PDF Keywords |
subject |
PDF Subject |
title |
PDF Title. If left unspecified, first Heading (h1) in the document is used. |
existing_bookmarks |
What to do with existing bookmarks in individual files. Options are keep, flatten, and remove. See docs for more details. |
Additionally, PDF links specified in markdown can have attributes to alter the PDFs before merging. The below attribute will rotate the second PDF file by 90 degrees clockwise before merging:
[Part 1](1.pdf) [Part 2](2.pdf){: rotate="90"}
And the below attribute will merge only pages 2 to 5, both inclusive, from the second PDF file:
[Part 1](1.pdf) [Part 2](2.pdf){: start=2 end=5}
The list of available attributes are:
Attribute |
Notes |
---|---|
rotate |
Rotate the PDF. Valid values are 90, 180, 270 |
start |
Start page number for PDF page selection |
end |
End page number for PDF page selection |
Documentation
Additional documentation is maintained on the project wiki on GitHub.
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
Built Distribution
File details
Details for the file pystitcher-1.0.4-py2.py3-none-any.whl
.
File metadata
- Download URL: pystitcher-1.0.4-py2.py3-none-any.whl
- Upload date:
- Size: 9.8 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ba9b06c8a2bcf41d5a126af045e84b44d695519b5ee05106946501102edb8abb |
|
MD5 | 9f770c61e5f56c1cfa8ab38652258353 |
|
BLAKE2b-256 | ec560397ea05ec45f18646ad6044d0e4aa1fb5338046f3817f7bfaa6bfee98ab |