PAPS(1)

NAME
paps - text to PostScript converter using Pango

SYNOPSIS
paps [options] files...

DESCRIPTION
paps reads an input file and writes a PostScript language or user specified format rendering of the file to standard output. paps accepts international text in any locale and provides internationalized text layout including text shaping and bidirectional text rendering.

If no filename argument is provided, paps reads the standard input. If the standard input is a terminal, input is terminated by an EOF signal, usually Control-d.

OPTIONS
paps follows the usual GNU command line syntax, with long options starting with two dashes (`-'). A summary of options is included below.

-h, --help
    Show summary of options.

--landscape
    Landscape output. Default is portrait.

--columns=cl
    Format output into cl columns. Default is 1.
    Please notice this option isn't related to the terminal length as in a "80 columns terminal".

--font=desc
    Use font based on description desc. Default is "Monospace 12". The format of the string representation is:

    "[family-list] [style-options] [size]"

    where family-list is a comma separated list of families optionally terminated by a comma, style-options is a whitespace separated list of words where each word describes one of style, variant, weight, or stretch, and size is a decimal number for size in points, e.g. "Courier,Monospace Bold Italic 10".

-o, --output=file
    Output file. Default is stdout. Output format is set based on file's extension when --format is not provided.

--rtl
    Do right-to-left (RTL) text layout and align text to the right. Text direction is detected automatically. Use this option for explicit RTL layout and right alignment.

--justify
    Justify the layout. Stretch complete lines to fill the entire width.

--wrap=wm
    Use line wrapping mode wm. Default is word-char.

    word
    Wrap lines at word boundaries

    char
    Wrap lines at character boundaries

    word-char
    Wrap lines at word boundaries, but fall back to character boundaries if there is not enough space for a full word

--show-wrap
    Mark wrapped lines with special characters.

--paper=ps
    Choose paper size. Accepted paper sizes are 'legal', 'letter', 'A3' and 'A4'. Default is A4.

--gravity=gr
    Set base glyph orientation. Default is auto.

    south
    Glyphs stand upright

    east
    Glyphs are rotated 90 degrees clockwise

    north
    Glyphs are upside-down

    west
    Glyphs are rotated 90 degrees counter-clockwise

    auto
    Gravity is resolved from the context

--gravity-hint=gh
    Set how horizontal scripts behave in a vertical context. Default is natural.

    natural
    Scripts will take their natural gravity based on the base gravity and the script

    strong
    Always use the base gravity, regardless of the script

    line
    For scripts not in their natural direction (e.g. Latin in East gravity), choose per-script gravity such that every script respects the line progression. This means, Latin and Arabic will take opposite gravities and both flow top-to-bottom for example.

--format=fmt
    Choose output format. Default is ps.

    ps
    PostScript

    pdf
    Portable Document Format

    svg
    Scalable Vector Graphics

Postscript points
    Each postscript point equals to 1/72 of an inch. 36 points are 1/2 of an inch.

--bottom-margin=bm
    Set bottom margin. Default is 36 postscript points.

--top-margin=tm
    Set top margin. Default is 36 postscript points.

--left-margin=lm
    Set left margin. Default is 36 postscript points.

--right-margin=rm
    Set right margin. Default is 36 postscript points.

--gutter-width=gw
    Set gutter width. Default is 40 postscript points.

--header
    Draw page header with document name, date and page number for each page. Header is not printed by default.

--header-left=fmt
    Sets the formatting for the left side of the header. See FORMAT for an explanation of the header and footer formatting. Default is the current localized date.

--header-center=fmt
    Sets the formatting for the center of the header. See FORMAT for an explanation of the header and footer formatting. Default is the filename.

--header-right=fmt
    Sets the formatting for the center of the header. See FORMAT for an explanation of the header and footer formatting. Default is the Page number.

--footer
    Draw page footer with document name, date and page number for each page. Footer is not printed by default.

--footer-left=fmt
    Sets the formatting for the left side of the footer. See FORMAT for an explanation of the footer and footer formatting. The default formatting is an empty string.

--footer-center=fmt
    Sets the formatting for the center of the footer. See FORMAT for an explanation of the footer and footer formatting. The default formatting is an empty string.

--footer-right=fmt
    Sets the formatting for the center of the footer. See FORMAT for an explanation of the footer and footer formatting. The default formatting is an empty string.

--title="text"
    Use text as the title string for page header. By default the input filename or "stdin" is used.

--markup
    Interpret input as pango markup. Pango Text Attribute Markup Language allows marking parts of the text with tags defining additional attributes such as font face, size, weight, colors or text decoration such as underline or strikethrough.

--encoding=enc
    Assume encoding of the input text is enc. By default the encoding of the current locale is used (e.g. UTF-8).

--lpi=lines
    Set number of lines per inch. This determines the line spacing.

--cpi=chars
    Set number of characters per inch. This is an alternative method of specifying the font size.

--g-fatal-warnings
    Make all glib warnings fatal.

EXIT STATUS

The following exit values are returned:

0
    Successful completion.

1
    An error occurred.

HEADER AND FOOTER FORMATTING

The header and footers may be formatted by a mini language based on the python f-strings. Text outside of squiggly brackets are entered literally in the output. Text inside squiggly brackets contain one of the following predefined list of variables:

    now
    The current time

    mtime
    The modification time of the file being printed

    page_idx
    The page index of the page

    num_pages
    The total number of pages in the document

    filename
    The filename (basename) of the document

    path
    The full path of the document

EXAMPLES

Example 1 Printing UTF-8 text file

The following command can be used to print a file in any of the UTF-8 based locales if the file is in UTF-8 or compatible codeset.

$ paps en_US_UTF-8.txt

By default paps will print PostScript rendering to standard output. Send the output to a printer using lp

$ paps en_US_UTF-8.txt | lp

or to a file using redirection or the -o option

$ paps en_US_UTF-8.txt > out.ps
$ paps -o out.ps en_US_UTF-8.txt

Example 2 Specify encoding

To print a file in specific encoding regardless of the current locale setting use the --encoding option. An example for Japanese EUC encoded input file:

$ paps --encoding eucjp ja_JP_eucjp.txt > out.ps

paps will still use current locale setting to prioritize the available fonts for current language.

Example 3 Specify locale

Override the LC_ALL environment variable to run paps in a different locale.

$ LC_ALL=ja_JP.eucjp paps ja_JP_eucjp.txt > out.ps

Here paps will assume the input is in Japanese EUC encoding and will use Japanese eucjp locale to render the output. If --header is added, the date is printed in Japanese.

Example 4 Change the header and footer

Override the header and the footer to show only the page in the middle of the footer.

$ paps --separation-lines -o /tmp/foo.pdf --header --header-left='' \
 --header-center='{path}' --header-right='' --footer \
 --footer-left='Printed {now:%c}' \
 --footer-right='Page {page_idx}/{num_pages}' \
 `pwd`/paps.ccx

Here paps will assume the input is in Japanese EUC encoding and will use Japanese eucjp locale to render the output. If --header is added, the date is printed in Japanese.

ENVIRONMENT VARIABLES
paps uses locale environment variables to determine its behavior. The following categories are used:

LC_CTYPE
    to assume the encoding of the input. This can be overridden by --encoding.

LC_TIME
    to format the date for header.

Font selection is also affected by current locale. Example 3 describes how to run paps in a different locale.

SEE ALSO

fc-match(1), setlocale(3C)

AUTHOR
paps was written by Dov Grobgeld <dov.grobgeld@gmail.com>.

This manual page was written by Lior Kaplan <kaplan@debian.org>, for the Debian project (but may be used by others).