POSTER(1)

πŸ“¦
this version Β· 2 versions
  • debian bookworm, debian trixie, ubuntu jammy, ubuntu noble, ubuntu questing, ubuntu resolute, ubuntu stonking (latest)
  • fedora 43, fedora 44
, in debian bookworm, debian trixie, ubuntu jammy, ubuntu noble, ubuntu questing, ubuntu resolute, ubuntu stonking

πŸ’– POSTER(1) β€” General Commands Manual πŸ’–

okay bestie, welcome to the poster glow-up manual. This is poster from the General Commands Manual, and she is ready to help you turn one lil postscript page into a whole wall of art. No cap. ✨

🌸 NAME 🌸

poster β€” Scale and tile a postscript image to print on multiple pages πŸ–¨οΈβœ¨

✨ SYNOPSIS ✨


# πŸ¦‹ DESCRIPTION πŸ¦‹

<pink>`poster`</pink> is that girl who can create a huge poster by building it from multiple pages and/or printing it on big media. She expects as input a generic (encapsulated) postscript file β€” normally something that prints on a single page. The output is again a postscript file, maybe containing multiple pages that together build the poster. The output pages have cutmarks and slightly overlapping images so assembling is easier. The input picture gets scaled to get the desired size. πŸ’…

The program uses a <yellow>brute-force method</yellow>: it copies the entire input file for each output page, so the output file can be <red>very large</red>. Since the program does not really bother about the input file contents, it clearly works for both black-and-white and color postscript. Iconic behavior, honestly. πŸ‘‘

To control its operation, you need to specify either the size of the desired poster or a scale factor for the image:

- <green>Given the poster size</green>, it calculates the required number of sheets to print on, and from that a scale factor to fill these sheets optimally with the input image.

- <green>Given a scale factor</green>, it derives the required number of pages from the input image size, and positions the scaled image centered on this area.

Its input file should best be a real `Encapsulated Postscript` file (often denoted with the extension `.eps` or `.epsf`). Such files can be generated from about all current drawing applications, and text processors like Word, Interleaf and Framemaker.
However `poster` tries to behave properly also on more relaxed, general postscript files containing a single page definition. Proper operation is obtained for instance on pages generated by (La)TeX and (g)troff.

The media to print on can be selected independently from the input image size and/or the poster size. `Poster` will determine by itself whether it is beneficial to rotate the output image on the media. πŸ”„

To preview the output results of `poster` and/or to (re-)print individual output pages, you should use a postscript previewer like `ghostview(1)`. πŸ‘€

# πŸ’… OPTIONS πŸ’…

- **`-v`** β€” <pink>Spill the tea.</pink> Tells you about scaling, rotation and number of pages. Default is silent operation, so she says nothing unless you ask. 🀫

- **`-f`** β€” <pink>Ask for manual media feed</pink> on the plotting/printing device, instead of using its standard paper tray. Default is adhering to the device settings. πŸ“ 

- **`-i <box>`** β€” <pink>Tell her the input image size.</pink> Default is reading the image size from the `%%BoundingBox` specification in the input file header. πŸ“¦

- **`-m <box>`** β€” <pink>Set the media size you wanna print on.</pink> See below for `<box>`. The default comes from the `PAPERCONF` environment variable. If that's not set, it reads from the file whose name is in the `PAPERSIZE` environment variable. If that too is not set, the default is read from `/etc/papersize`. See `papersize(5)` for the full format deets. πŸ“„

- **`-p <box>`** β€” <pink>Set the poster size.</pink> See below for `<box>`. Since `poster` will autonomously choose for rotation, always specify a `portrait` poster size (i.e. higher then wide). If you don't give the `-s` option, the default poster size is identical to the media size. πŸ“

- **`-s <number>`** β€” <pink>Set a linear scaling factor</pink> to produce the poster. Together with the input image size and optional margins, this induces an output poster size. So don't specify both `-s` and `-p`. Default is deriving the scale factor to fit a given poster size. πŸ”

- **`-c <box>` or `-c <number>%`** β€” <pink>Set the cut margin.</pink> This is the distance between the cutmarks and the paper edge. If the output is really tiled on multiple sheets, the cut marks indicate where to cut the paper for assembly. This margin must be big enough to cover the non-printable margin which almost all printers have. For `<box>` see below. Default is `5%`. Only when you specify identical poster and media sizes, the default cut margin becomes `0`, effectively removing the cutmarks. βœ‚οΈ

- **`-w <box>` or `-w <number>%`** β€” <pink>Set a white margin around the output image.</pink> In the `ideal` situation (when an input `eps` file specifies an exact BoundingBox in its header), the output image will be scaled exactly to the edges of the resulting poster (minus cut margin). If you desire a certain margin to remain around the picture after poster assembly, you can specify this with `-w`. (This option is actually redundant, since you can obtain the same result using `-s` or `-i`. However some might find this more convenient.) Default is `0`. 🀍

- **`-P <pagespec>`** β€” <pink>Pick which pages of the poster to print.</pink> It consists of a comma-separated list of single pages or page ranges (using the dash). The order in which page number appears determines the final page order in the result PostScript file. Page numbering starts at `1`, from right to left and bottom-up. Examples: `1-2` or `1,3-4,7`. πŸ“‘

- **`-o <outputfile>`** β€” <pink>Name the file to write the output into.</pink> (Only added for those poor people who cannot specify output redirection from their command line due to a silly OS.) Default is writing to standard output. πŸ“

The `<box>` mentioned above is a specification of horizontal and vertical size. Only in combination with the `-i` option, the program also understands the offset specification in the `<box>`. In general:

<box> = [<multiplier>][<offset>]<unit>


with multiplier and offset being specified optionally.

<multiplier> = <number>*<number> <offset> = +<number>,<number> <unit> = <medianame> or <distancename>


Many international media names are recognised by the program, in upper and lower case, and can be shortened to their first few characters, as long as unique. For instance `A0`, `Let`. Distance names are like `cm`, `i`, `ft`. 🌍

# πŸŽ€ EXAMPLES πŸŽ€

The following command prints an A4 input file on 8 A3 pages, forming an A0 poster:

The next command prints an eps input image on a poster of 3x3 Letter pages:


The next command enlarges an eps input image to print on a large-media A0 capable device, maintaining 2 inch margins:

Enlarge a postscript image exactly 4 times, print on the default A4 media, and let poster determine the number of pages required:


Scale a postscript image to a poster of about 1 square meter, printing on `Legal` media, maintaining a 10% of `Legal` size as white margin around the poster.

🧚 PROBLEMS & QUESTIONS 🧚

I get a blurry image and/or interference patterns

If your input file contains -or consists of- pixel images (as opposed to just vector data which is essentially resolution independent), you might have this problem. Such pixel images are normally made to fit well to standard 300 (or 600) dpi devices. Scaling such a picture with an carelessly chosen factor, can easily lead to hazy edges and interference patterns on the output. The solution is to provide poster with an exact scaling factor (with the -s option), chosen as an integer. If integer scaling is impractical for your purpose, choose a fractional number made from a small integer denominator (2, 3, 4). 😭

Can I select only a small part of a given input picture?

Yes, for this purpose you can define both the size (width and height) and offset (from left and bottom) of a window on the input image. Specify these numbers as argument to a -i command line option. One way to obtain such numbers is previewing the original image with ghostview, and observing the coordinate numbers which it continually displays. These numbers are in postscript units (points), named by poster as just p. πŸ”

Poster doesn't seem to work properly, output pages are empty

The major cause for poster not to work correctly, is giving it postscript files which don't conform to proper 'eps' behaviour. Try whether your application (or printer driver) cannot generate real 'encapsulated postscript'. πŸ’€

If I ask for a 50x50cm poster, it always generates something bigger

Yes, probably. When specifying a desired output size with the -p option, poster first determines an array of sheets to cover such an area. Then it determines a scale factor for the picture to fill these sheets upto their edge. As result your requested size is used as rough guess only. If you want an exact output size, specify the scaling factor yourself with the -s option (and omit the -p). πŸ˜…

I want to keep the white space around the poster as in my original

Poster will as default use the input image bounding box, and scale/translate that to the edges of your poster. If the program which generated your input file specifies an exact and tight %%BoundingBox, you will indeed loose your white margin. To keep the original margin, specify a -i option with as argument the papersize on which the original document was formatted (such as -iA4). Alternatively specify a smaller scale factor (with -s) or an explicit new margin (with -w). 🀍

🌈 POSTER ASSEMBLY 🌈

Our preferred method for the assembly of a poster from multiple sheets is as follows:

  • Arrange the sheets in the proper order on a large table or on the floor. 🧩
  • Remove from all sheets, except from those in the leftmost column or bottom row, their left and bottom cutmargin. βœ‚οΈ
  • In left-to-right and bottom-to-top order, glue the right (and top) cutmargin and stick the right (and upper) neighbouring page on top of that. 🩹
  • Turn the glued-together poster face bottom, and put adhesive tape on the sheet edges (on the backside of the poster) for more strength. πŸ’ͺ
  • Remove the remaining cutmargin around the poster. πŸŽ‰

✨ DEVICE SETTINGS ✨

Okay bestie, so if you've got a postscript level-2 capable printer or plotter β€” and honestly? that's basically every modern postscript device these days πŸ’… β€” poster is gonna send device settings straight into its output file. No cap.

What that looks like is a setpagedevice call, and it sets:

  • the media size. πŸ”₯ This one is required for all printers I know to get correct behaviour on different media/picture sizes.
  • duplexing off. πŸ™ˆ Some printers will otherwise perform double-side printing by default. Clearly that is not what you want to print a poster.
  • manual media feed. πŸŽ€ This is given only when poster was executed with the -f command line option. It's a convenient feature if you want to print your job on different media than normally installed in the paper tray, and you're submitting your job through a multi-user networking and spooling environment.

These settings cause proper device behaviour, without the need to manually interact with the printer settings, and has been here locally tested to work on devices like the HP300XL and HP650C. Iconic. ⭐

The settings thus passed in the postscript file, will affect the device for this job only. So no permanent chaos, promise. 🫢

🌈 DSC CONFORMANCE 🌈

Poster will generate its own DSC header and other DSC lines in the output file, according the Document Structuring Conventions - version 3.0, as written down in the Postscript Language Reference Manual, 2nd ed. from Adobe Systems Inc, Addison Wesley Publ comp., 1990. πŸ“šβœ¨

It will copy any %%Document... line from the input file DSC header to its own header output. This is used here in particular for required nonresident fonts. πŸ‘‘

However the copy(s) of the input file included in the output, are stripped from all lines starting with a %%, since they tend to disturb our ghostview previewer and take useless space anyhow. πŸ’€ (not the previewer catching strays lol)


πŸ’– SEE ALSO πŸ’–


🌸 CONTRIBUTED BY 🌸

Jos van Eijndhoven (email: J.T.J.v.Eijndhoven@ele.tue.nl) Design Automation Section (http://www.es.ele.tue.nl) Dept. of Elec. Eng. Eindhoven Univ of Technology The Netherlands 24 August, 1995


and that's a wrap on POSTER(1), bestie πŸŽ€ β€” the page itself carries that version/date energy from way back on 24 August, 1995, and honestly? it still ate. go print something huge, you main character. πŸ’…πŸ¦‹βœ¨