jenom / pdfbook2

Create booklets from PDF files
GNU General Public License v3.0
63 stars 13 forks source link

pdfbook2 - transform pdf files to booklets

pdfbook2 v1.4 (https://github.com/jenom/pdfbook2)
(c) 2015 - 2020 Johannes Neumann (http://www.neumannjo.de)
licensed under GPLv3 (http://www.gnu.org/licenses/gpl-3.0)
based on pdfbook by David Firth with help from Marco Pessotto

DESCRIPTION

Create print-ready PDF files from some INPUT PDF files for booklet printing.
The resulting files need to be printed in landscape/long edge double sided
printing. The default paper format depends on the locale and is choosen by
pdfjam. It can be set with the --paper option. 

Before the pdf is composed the INPUT file is cropped to the relevant area in
order to discard unnecessary white spaces. In this process, all pages are
cropped to the same dimensions. Extra margins can be defined at the edges of 
the booklet and in the middle where the binding occurs.

The OUTPUT is written to INPUT-book.pdf. Existing files will be overwritten.
All input files are processed seperatly.

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 (at your option) 
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 for 
more details. You should have received a copy of the GNU General Public 
License along with this program. If not, see <http://www.gnu.org/licenses/>.

INSTALLATION

Simply copy the file to any convenient location preferably covered by the 
PATH variable of your shell. Make sure it is set as executable like

    chmod +x pdfbook2

for unix like systems.

REQUIREMENTS

python 3.6, pdfjam, pdfcrop and their dependencies.

EXAMPLES

To simply create a booklet from input.pdf you can use

    pdfbook2 input.pdf

to create input-book.pdf. To select a special type of paper you can do

    pdfbook2 --paper=letter input.pdf

for letter or

    pdfbook2 --paper=a4paper input.pdf

for standard A4. To increase the inner margin for binding use

    pdfbook2 --inner-margin=200 input.pdf

to increase the default value of 150. You can submit multiple files to the 
script for processing like

    pdfbook2 input1.pdf input2.pdf

which will result in input1-book.pdf and input2-book.pdf.

USAGE

pdfbook2 [options] file1 [file2 ...]

OPTIONS

--version   show program's version number and exit
--help, -h  show this help message and exit

GENERAL

    --paper=STR, -p STR
            Format of the output paper dimensions as latex keyword (e.g.
            a4paper, letterpaper, legalpaper, ...)
    --short-edge, -s
            Format the booklet for short-edge double-sided printing
    --no-crop, -n
            Prevent the cropping to the content area

MARGINS

    --outer-margin=INT, -o INT
            Defines the outer margin in the booklet (default: 40)
    --inner-margin=INT, -i INT
            Defines the inner margin between the pages in the booklet
            (default: 150)
    --top-margin=INT, -t INT
            Defines the top margin in the booklet (default: 30)
    --bottom-margin=INT, -b INT
            Defines the bottom margin in the booklet (default: 30)

ADVANCED

    --signature=INT
            Define the signature for the booklet handed to pdfjam, needs to 
            be multiple of 4 (default: 4)
    --signature*=INT
            Same as --signature
    --resolution=INT
            Resolution used by ghostscript in bp (default: 72)

CHANGELOG

1.4 2020/01/20

    -   migration to Python 3
    -   fixed bug if the input document had only one page
    -   fix for signature option not working

1.3 2019/08/12

    -    removed wait after popen to prevent deadlock with very large documents

1.2 2015/06/03

    -   added man page

1.1 2015/06/01

    -   added resolution, signature, no-crop options
    -   better handling of input files with different margins on odd and 
        even pages
    -   added short options
    -   speedup for bound calculations and cropping by setting ghostscript
        resolution to 72 (ref. --resolution option)

1.0 2015/05/27 

    -   initial version