]> mj.ucw.cz Git - paperjam.git/blobdiff - paperjam.1.txt
Man page: Fixed a typo
[paperjam.git] / paperjam.1.txt
index 1fc9546dde27e4cb76d415f5476df6605bcaa3bd..f9fd93e96d4f20318e334f0a7530d07ce94f6121 100644 (file)
@@ -11,15 +11,15 @@ SYNOPSIS
 
 DESCRIPTION
 -----------
-Paperjam is a tool for transform PDF files. It can re-order pages, scale
+PaperJam is a tool for transform PDF files. It can re-order pages, scale
 and rotate them, put multiple pages on a single sheet, draw cropmarks,
 and many other tricks.
 
-Paperjam takes an input file, splits it to a list of pages, applies a sequence
+PaperJam takes an input file, splits it to a list of pages, applies a sequence
 of commands on this list, and finally writes the results to an output file.
 
-For each page, Paperjam tracks two sets of dimensions: the width and height
-of the 'physical page', and the 'image box', which is a rectangle on the
+For each page, PaperJam tracks two sets of dimensions: the width and height
+of the 'physical page' (paper), and the 'image box', which is a rectangle on the
 physical page containing all useful contents. Initially, the physical
 page is equal to the *CropBox* of the PDF page and the image box to its
 *ArtBox* (which is optional and it defaults to the *CropBox*). Further
@@ -40,12 +40,12 @@ OPTIONS
 
 GENERAL SYNTAX
 --------------
-Paperjam takes a list of commands separated by spaces, like this:
+PaperJam takes a list of commands separated by spaces, like this:
 
        paperjam 'common scaleto("a4") nup(2, hspace=5mm)' in.pdf out.pdf
 
 Each command starts with its identifier (a sequence of alphanumeric characters,
-underscores, and dashes, which starts with a letter). Then come arguments enclosed
+underscores, and dashes, which begins with a letter). Then come arguments enclosed
 in parentheses. All arguments can be written as 'name'='value' (where the name is
 an identifier). For some of them, the name can be omitted and the meaning
 follows from the position in the argument list (hence these are called
@@ -67,7 +67,7 @@ strings::
        satisfies the syntax of an identifier. In case of positional arguments,
        the identifier must not match the name of any argument. Please avoid
        using this shortcut in scripts, because they could be easily broken
-       by parameters introduced in newer versions of Paperjam.
+       by parameters introduced in newer versions of PaperJam.
 
 switches::
        Boolean value: either 0 (false) or 1 (true). If only the name is given (with no value
@@ -85,7 +85,7 @@ described by a 'pipeline' like:
 The pipeline is enclosed in curly braces. It consists of one or more 'stages'
 separated by commas. Each stage has one or more 'page selectors' (page numbers
 or ranges) and an optional list of commands to apply on these pages (separated
-from the selectors by a semicolon).
+from the selectors by a colon).
 
 When a range is written backwards (the first page number is greater than the
 second one), the pages are processed in reverse order.
@@ -94,8 +94,8 @@ Paper formats
 ~~~~~~~~~~~~~
 When a paper format is expected, it is given either by its width and height
 (the corresponding arguments are usually called *w* and *h*), or by the standard
-name of the format (called *paper*). Paperjam currently uses the libpaper library
-for parsing the names. You can call *paperconf -a* to get the list of known names.
+name of the format (called *paper*). PaperJam currently uses the libpaper library
+for parsing the names. You can call +paperconf -a+ to get the list of known names.
 
 Margins
 ~~~~~~~
@@ -112,15 +112,15 @@ to vertical.
 
 Positioning
 ~~~~~~~~~~~
-Multiple commands require positioning an image on a larger page. The image
+Multiple commands involve positioning an image on a larger page. The image
 is placed according to a two-letter position specification (usually an argument
 called *pos*). The first letter specifies vertical placement: *t* for top,
 *c* for center, *b* for bottom. The second one horizontal placement: *l* for left,
-*c* for center, *r* for right. If no position is given, *cc* is assumed.
+*c* for center, *r* for right.
 
 COMMANDS
 --------
-Paperjam knows the following commands and arguments. Positional arguments
+PaperJam knows the following commands and arguments. Positional arguments
 have their names enclosed in square brackets.
 
 add-blank
@@ -131,7 +131,7 @@ Add blank page(s) after each page.
        The number of blank pages to add. Defaults to 1.
 
 *[paper=]*'string', *w=*'dimen', *h=*'dimen'::
-       Paper format of the blank pages. (See Paper formats above.)
+       Paper size of the blank pages (see Paper formats above).
 
 apply
 ~~~~~
@@ -142,7 +142,7 @@ Applies commands on a sub-set of pages:
 Takes a pipeline. For each input page, it finds the pipeline stage
 matching the page index (its position in the input document, starting with 1)
 and applies the commands in the stage on the page. If no stage matches,
-the page is left unchanged. If multiple stages, the first one wins.
+the page is left unchanged. If multiple stages match, the first one wins.
 
 book
 ~~~~
@@ -170,7 +170,7 @@ common
 ~~~~~~
 Use a common page size and image box for all pages. More specifically,
 the new page width and height are set to the maximum of all page widths
-and heights and the new image box is the minimal rectangle containing all
+and heights and the new image box to the minimal rectangle containing all
 image boxes.
 
 cropmarks
@@ -179,11 +179,11 @@ Draw cropping marks around the image box.
 
 *mark=*'string'::
        Set cropmark style:
-       'box' for a rectangle around the image box,
-       'cross' for crosses in the corners of the box,
-       'in' for two arms of a cross in each corner, pointing inwards,
-       'out' for two arms pointing outwards,
-       'bg' for drawing a filled rectangle under the box.
+       *box* for a rectangle around the image box,
+       *cross* for crosses in the corners of the box,
+       *in* for two arms of a cross in each corner, pointing inwards,
+       *out* for two arms pointing outwards,
+       *bg* for drawing a filled rectangle under the box.
 
 *pen=*'dimen'::
        Pen width for drawing cropmarks (for all styles except bg).
@@ -229,11 +229,11 @@ and the position of the image according to the margins.
 If the paper and the image have different aspect ratios, the *pos*
 argument controls the position of the image on the paper.
 
-*[paper=]*'string', *w=*'dimen', *h=*'dimen'
+*[paper=]*'string', *w=*'dimen', *h=*'dimen'::
        Paper format, or paper width and height (see Paper formats above
        for details).
 
-*pos=*'string':
+*pos=*'string'::
        Specify position of the image on the paper (see Positioning above).
        Defaults to *cc*.
 
@@ -244,10 +244,10 @@ flip
 ~~~~
 Flip pages horizontally or vertically.
 
-*h=*'switch':
+*h=*'switch'::
        Flip horizontally.
 
-*v=*'switch':
+*v=*'switch'::
        Flip vertically.
 
 margins
@@ -289,7 +289,7 @@ Arguments:
 *[n=]*'int' (mandatory)::
        Number of pages in a single tuple.
 
-*half=*'switch':
+*half=*'switch'::
        Process only the first half of n-tuples. This is often used in conjunction
        with negative page numbers.
 
@@ -303,7 +303,7 @@ While this command skips every other page:
 
 move
 ~~~~
-Shift (translate) contents on the page.
+Shift contents on the page. Paper size does not change, the image box moves.
 
 *[x=]*'dimen', *[y=]*'dimen'::
        Move everything right/up by the given distance.
@@ -315,8 +315,8 @@ Do nothing.
 nup
 ~~~
 Combine multiple pages to one (n-up printing). Allows detailed control over the
-parameters. If only a subset of the parameters is given (in the most trivial cases,
-only the number of pages to put on a single sheet), the remaining parameters are
+parameters, but if only a subset of the parameters is given (in the most trivial case,
+just the number of pages to put on a single sheet), the remaining parameters are
 adjusted to maximize coverage of the sheet.
 
 For example, when the input document is typeset on A4 paper,
@@ -338,26 +338,26 @@ each page to fit in its tile.
 *[m=]*'number'::
        The number of columns of the grid of tiles.
 
-*by=*'string':
+*by=*'string'::
        Tile filling order: *rows* (default) fills rows from the top to the bottom,
        inside each row from the left to the right; *cols* fills columns from
        the left to the right, inside each column from the top to the bottom;
        *tile* copies the same page to all tiles.
 
-*crop=*'switch':
+*crop=*'switch'::
        Crop input pages to their image box. (By default, *nup* places the input
        papers in tiles. With this option, it places the image boxes in tiles,
        effectively cutting away original margins.)
 
-*mixed=*'switch':
+*mixed=*'switch'::
        By default, *nup* adjusts all input pages to a common paper size and
        image box size (like the *common* command does). This switch disables
        that.
 
-*rotate=*'switch':
+*rotate=*'switch'::
        Specify if the pages should be rotated. Default: choose automatically.
 
-*scale=*'number':
+*scale=*'number'::
        Scaling factor. Default: choose automatically.
 
 *[paper=]*'string', *w=*'dimen', *h=*'dimen'::
@@ -372,27 +372,27 @@ each page to fit in its tile.
        paper (after subtracting margins) does not match the aspect ratio of
        the tile grid. Defaults to *cc*.
 
-*cmark=*'string', *cpen=*'dimen', *clen=*'dimen', *coffset=*'dimen', *ccolor=*'string':
+*cmark=*'string', *cpen=*'dimen', *clen=*'dimen', *coffset=*'dimen', *ccolor=*'string'::
        Draw cropmarks around each tile. See *crop* for the meaning of arguments.
 
-*tpos=*'string':
+*tpos=*'string'::
        Position of original pages inside tiles (see Positioning above).
        This applies when different pages have different sizes.
        Defaults to *tl*.
 
-*space=*'dimen', *hspace=*'dimen', *vspace=*'dimen':
+*space=*'dimen', *hspace=*'dimen', *vspace=*'dimen'::
        Insert extra spaces between adjacent tiles in the grid (in both directions,
        horizontally, vertically). This is useful together with *crop*.
 
 paper
 ~~~~~
-Place image on a given paper. Defines new paper size, translates the image box
+Place image on a given paper. Sets a new paper size and translates the image box
 according to the given position.
 
 *[paper=]*'string', *w=*'dimen', *h=*'dimen'::
        Paper size (see Paper formats above).
 
-*pos=*'string':
+*pos=*'string'::
        Position of the image on the paper (see Positioning above). Default: *cc*.
 
 rotate
@@ -406,7 +406,7 @@ scale
 ~~~~~
 Scale the page by a given factor.
 
-*[x=]*'number', *[y=]*'number':
+*[x=]*'number', *[y=]*'number'::
        Set horizontal and vertical scaling factor. If only one is given,
        it is used in both directions.
 
@@ -417,7 +417,7 @@ Scale the entire page to a given size.
 *[paper=]*'string', *w=*'dimen', *h=*'dimen'::
        Paper size (see Paper formats above).
 
-*pos=*'string':
+*pos=*'string'::
        Position of the old paper on the new one (see Positioning above). Default: *cc*.
        This applies if the aspect ratios of both papers do not match.
 
@@ -430,15 +430,16 @@ right. For each stage, it assembles a temporary document containing the selected
 applies the stage's commands on it, and appends the resulting document to the output of
 the whole select command.
 
-For example, this selects pages 1, 10 to 19, and 29 to 20 in reverse order:
+For example, the following command selects pages 1, 10 to 19, and 20 to 29 in reverse order.
+The rest of the document is discarded.
 
        select { 1 10..19 29..20 }
 
-This is the same:
+This has the same effect:
 
        select { 1, 10..19, 29..20 }
 
-This select two pages and rotates them differently:
+This selects two pages and rotates them differently:
 
        select { 1: rotate(90), 2: rotate(-90) }
 
@@ -452,14 +453,47 @@ a difference sometimes:
 
 The first command forms two temporary documents and applies common to each of them separately
 (therefore pages 1 to 10 will have one common size and pages 21 to 30 another). The remaining
-commands give the same result. The second command forms a single temporary document with 20 pages
+three commands give the same result. The second command forms a single temporary document with 20 pages
 and applies common to all of it at once. The third command forms a single temporary document,
 which immediately becomes the result of select, to which the final common is applied. And the fourth
 command forms two temporary documents, concatenates them to the result of select, and finally applies
 common.
 
+slice
+~~~~~
+Slices the image to several smaller pages. Each page receives a part of the original
+image, gluing the parts together produces the original image.
+
+*[paper=]*'string', *w=*'dimen', *h=*'dimen'::
+       Paper size of the produced pages (see Paper formats above).
+
+*pos=*'string'::
+       Position of the original image on a "canvas" obtained by gluing
+       together non-margin parts of the produced pages (see Positioning above).
+       Default: *cc*.
+
+*margin=*'dimen', *hmargin=*'dimen', *vmargin=*'dimen', *lmargin=*'dimen', *rmargin=*'dimen', *tmargin=*'dimen', *bmargin=*'dimen'::
+       Set margins of the produced pages (see Margins above). Defaults to 0.
+
+*bleed=*'dimen'::
+       Let the parts of the image bleed this far outside their boxes.
+
 LICENSE
 -------
-Paperjam was written by Martin Mares.
+PaperJam was written by Martin Mares.
 It can be distributed and used under the terms of the GNU
 General Public License version 2 or any later version.
+
+HISTORY
+-------
+I conceived the idea of a document processor like PaperJam when struggling with pre-press
+formatting in the early 2000's. At that time, the basic ideas behind the language were born,
+but everything was deeply rooted in the then standard PostScript world. After some years,
+I managed to convince a student of mine Ales Snuparek to implement my ideas as his bachelor's project.
+He wrote the program PsPdfTool for transforming both PostScript and PDF documents, which turned
+out to be terribly useful.
+
+In the 2010's, limitations of the old design became clear and many PDF documents were using
+features not known to PsPdfTool (most prominently object streams). After several years of
+pondering, I became fond of the QPDF library and wrote PaperJam as a modern successor of
+PsPdfTool.