Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/captn3m0/pystitcher
pystitcher stitches your PDF files together, generating nice customizable bookmarks for you using a declarative markdown file as input
https://github.com/captn3m0/pystitcher
pdf-bookmarker pdf-generation pdfmerge python-pdf
Last synced: 10 days ago
JSON representation
pystitcher stitches your PDF files together, generating nice customizable bookmarks for you using a declarative markdown file as input
- Host: GitHub
- URL: https://github.com/captn3m0/pystitcher
- Owner: captn3m0
- License: mit
- Created: 2021-05-26T12:44:11.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2022-05-27T07:22:57.000Z (over 2 years ago)
- Last Synced: 2024-04-24T14:37:46.413Z (7 months ago)
- Topics: pdf-bookmarker, pdf-generation, pdfmerge, python-pdf
- Language: Python
- Homepage: https://pypi.org/project/pystitcher/
- Size: 160 KB
- Stars: 388
- Watchers: 7
- Forks: 10
- Open Issues: 8
-
Metadata Files:
- Readme: README.rst
- Changelog: CHANGELOG.rst
- Funding: .github/FUNDING.yml
- License: LICENSE.txt
Awesome Lists containing this project
- awesome-github-repos - captn3m0/pystitcher - pystitcher stitches your PDF files together, generating nice customizable bookmarks for you using a declarative markdown file as input (Python)
README
==========
pystitcher
==========.. image:: https://img.shields.io/pypi/v/pystitcher
:target: https://pypi.org/project/pystitcher/
:alt: PyPI Version.. image:: https://img.shields.io/pypi/l/pystitcher
:target: LICENSE.txt
:alt: Repository License.. image:: https://img.shields.io/github/checks-status/captn3m0/pystitcher/main
:target: https://github.com/captn3m0/pystitcher/actions?query=branch%3Amain
:alt: GitHub branch checks status.. image:: https://img.shields.io/codecov/c/gh/captn3m0/pystitcher
:target: https://app.codecov.io/gh/captn3m0/pystitcher/
:alt: Codecov|
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 fileoptional 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:
.. image:: https://i.imgur.com/qPVpZGt.png
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.0Configuration 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.