1
<?xml version="1.0" encoding="utf-8" ?>
2
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
<meta name="generator" content="Docutils 0.7: http://docutils.sourceforge.net/" />
7
<title>pdfposter</title>
8
<meta name="author" content="Hartmut Goebel <h.goebel@crazy-compilers.com>" />
9
<meta name="copyright" content="2008-2013 by Hartmut Goebel" />
10
<style type="text/css">
13
:Author: David Goodger (goodger@python.org)
14
:Id: $Id: html4css1.css 6253 2010-03-02 00:24:53Z milde $
15
:Copyright: This stylesheet has been placed in the public domain.
17
Default cascading style sheet for the HTML output of Docutils.
19
See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
20
customize this style sheet.
23
/* used to remove borders from tables and images */
24
.borderless, table.borderless td, table.borderless th {
27
table.borderless td, table.borderless th {
28
/* Override padding for "table.docutils td" with "! important".
29
The right padding separates the table cells. */
30
padding: 0 0.5em 0 0 ! important }
33
/* Override more specific margin styles with "! important". */
34
margin-top: 0 ! important }
36
.last, .with-subtitle {
37
margin-bottom: 0 ! important }
43
text-decoration: none ;
50
margin-bottom: 0.5em }
52
/* Uncomment (and remove this text!) to get bold-faced definition list terms
60
div.abstract p.topic-title {
64
div.admonition, div.attention, div.caution, div.danger, div.error,
65
div.hint, div.important, div.note, div.tip, div.warning {
67
border: medium outset ;
70
div.admonition p.admonition-title, div.hint p.admonition-title,
71
div.important p.admonition-title, div.note p.admonition-title,
72
div.tip p.admonition-title {
74
font-family: sans-serif }
76
div.attention p.admonition-title, div.caution p.admonition-title,
77
div.danger p.admonition-title, div.error p.admonition-title,
78
div.warning p.admonition-title {
81
font-family: sans-serif }
83
/* Uncomment (and remove this text!) to get reduced vertical space in
85
div.compound .compound-first, div.compound .compound-middle {
86
margin-bottom: 0.5em }
88
div.compound .compound-last, div.compound .compound-middle {
97
div.dedication p.topic-title {
105
div.footer, div.header {
114
div.line-block div.line-block {
120
margin: 0 0 0.5em 1em ;
121
border: medium outset ;
123
background-color: #ffffee ;
128
div.sidebar p.rubric {
129
font-family: sans-serif ;
132
div.system-messages {
135
div.system-messages h1 {
139
border: medium outset ;
142
div.system-message p.system-message-title {
149
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
150
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
162
img.align-left, .figure.align-left, object.align-left {
167
img.align-right, .figure.align-right, object.align-right {
172
img.align-center, .figure.align-center, object.align-center {
188
/* reset inner alignment in figures */
192
/* div.align-center * { */
193
/* text-align: left } */
195
ol.simple, ul.simple {
199
list-style: decimal }
202
list-style: lower-alpha }
205
list-style: upper-alpha }
208
list-style: lower-roman }
211
list-style: upper-roman }
225
white-space: nowrap }
234
font-family: sans-serif ;
239
font-family: sans-serif ;
250
pre.literal-block, pre.doctest-block {
255
font-family: sans-serif ;
256
font-style: oblique }
258
span.classifier-delimiter {
259
font-family: sans-serif ;
263
font-family: sans-serif }
266
white-space: nowrap }
274
span.section-subtitle {
275
/* font-size relative to parent (h1..h6 element) */
279
border-left: solid 1px gray;
287
margin-bottom: 0.5em }
290
border-left: solid 1px black;
293
table.docutils td, table.docutils th,
294
table.docinfo td, table.docinfo th {
295
padding-left: 0.5em ;
296
padding-right: 0.5em ;
297
vertical-align: top }
299
table.docutils th.field-name, table.docinfo th.docinfo-name {
302
white-space: nowrap ;
305
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
306
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
310
list-style-type: none }
315
<div class="document" id="pdfposter">
316
<h1 class="title">pdfposter</h1>
317
<h2 class="subtitle" id="scale-and-tile-pdf-images-pages-to-print-on-multiple-pages">Scale and tile PDF images/pages to print on multiple pages.</h2>
318
<table class="docinfo" frame="void" rules="none">
319
<col class="docinfo-name" />
320
<col class="docinfo-content" />
322
<tr><th class="docinfo-name">Author:</th>
323
<td>Hartmut Goebel <<a class="reference external" href="mailto:h.goebel@crazy-compilers.com">h.goebel@crazy-compilers.com</a>></td></tr>
324
<tr><th class="docinfo-name">Version:</th>
325
<td>Version 0.6.0</td></tr>
326
<tr><th class="docinfo-name">Copyright:</th>
327
<td>2008-2013 by Hartmut Goebel</td></tr>
328
<tr class="field"><th class="docinfo-name">Licence:</th><td class="field-body">GNU Public Licence v3 (GPLv3)</td>
330
<tr class="field"><th class="docinfo-name">Manual section:</th><td class="field-body">1</td>
334
<!-- -*- mode: rst ; ispell-local-dictionary: "american" -*- -->
335
<div class="section" id="synopsis">
337
<p><tt class="docutils literal">pdfposter</tt> <options> infile outfile</p>
339
<div class="section" id="description">
341
<p><tt class="docutils literal">Pdfposter</tt> can be used to create a large poster by building it from
342
multple pages and/or printing it on large media. It expects as input a
343
PDF file, normally printing on a single page. The output is again a
344
PDF file, maybe containing multiple pages together building the
346
The input page will be scaled to obtain the desired size.</p>
348
The output pages bear cutmarks and have slightly overlapping
349
images for easier assembling. -->
350
<p>The program uses a simple but efficient method which is possible with
351
PDF: All new pages share the same data stream of the scaled page. Thus
352
resulting file grows moderatly.</p>
353
<p>To control its operation, you need to specify either the size of the
354
desired poster or a scale factor for the image:</p>
356
<li>Given the poster size, it calculates the required number of sheets
357
to print on, and from that a scale factor to fill these sheets
358
optimally with the input image.</li>
359
<li>Given a scale factor, it derives the required number of pages from
360
the input image size, and positions the scaled image centered on
364
<div class="section" id="options">
366
<div class="section" id="general-options">
367
<h2>General Options</h2>
368
<table class="docutils option-list" frame="void" rules="none">
369
<col class="option" />
370
<col class="description" />
372
<tr><td class="option-group">
373
<kbd><span class="option">--version</span></kbd></td>
374
<td>Show program's version number and exit</td></tr>
375
<tr><td class="option-group">
376
<kbd><span class="option">-h</span>, <span class="option">--help</span></kbd></td>
377
<td>Show help message and exit</td></tr>
378
<tr><td class="option-group" colspan="2">
379
<kbd><span class="option">--help-media-names</span></kbd></td>
381
<tr><td> </td><td>List available media and distance names and exit</td></tr>
382
<tr><td class="option-group">
383
<kbd><span class="option">-v</span>, <span class="option">--verbose</span></kbd></td>
384
<td>Be verbose. Tell about scaling, rotation and number of
385
pages. Can be used more than once to increase the
387
<tr><td class="option-group">
388
<kbd><span class="option">-n</span>, <span class="option">--dry-run</span></kbd></td>
389
<td>Show what would have been done, but do not generate files.</td></tr>
390
<tr><td class="option-group">
391
<kbd><span class="option">-A</span>, <span class="option">--art-box</span></kbd></td>
392
<td>Use the content area defined by the ArtBox (default:
393
use the area defined by the TrimBox)</td></tr>
397
<div class="section" id="defining-output">
398
<h2>Defining Output</h2>
399
<table class="docutils option-list" frame="void" rules="none">
400
<col class="option" />
401
<col class="description" />
403
<tr><td class="option-group" colspan="2">
404
<kbd><span class="option">-m <var>BOX</var></span>, <span class="option">--media-size=<var>BOX</var></span></kbd></td>
406
<tr><td> </td><td>Specify the desired media size to print on.
407
See below for <em>BOX</em>. The default is A4 in the standard
409
<tr><td class="option-group" colspan="2">
410
<kbd><span class="option">-p <var>BOX</var></span>, <span class="option">--poster-size=<var>BOX</var></span></kbd></td>
412
<tr><td> </td><td><p class="first">Specify the poster size. See below for <em>BOX</em>.
413
pdfposter will autonomously choose scaling and rotation to
414
best fit the input onto the poster (see EXAMPLES below).</p>
415
<p class="last">If you give neither the <em>-s</em> nor the <em>-p</em> option, the default
416
poster size is identical to the media size.</p>
418
<tr><td class="option-group">
419
<kbd><span class="option">-s <var>NUMBER</var></span></kbd></td>
420
<td><p class="first">Specify a linear scaling factor to produce the poster.
421
Together with the input image size and optional margins,
422
this induces an output poster size. So don't specify both <em>-s</em>
424
<p class="last">Default is deriving the scale factor to fit a given poster
430
<div class="section" id="box-definition">
431
<h2>Box Definition</h2>
432
<p>The <em>BOX</em> mentioned above is a specification of horizontal and
433
vertical size. The syntax is as follows (with multipier being
434
specified optionally):</p>
436
<p><em>box</em> = [ <em>multiplier</em> ] <em>unit</em></p>
437
<p><em>multiplier</em> = <em>number</em> "x" <em>number</em></p>
438
<p><em>unit</em> = <em>medianame</em> or <em>distancename</em></p>
440
<!-- Only in combination with the *-i* option, the program
441
also understands the offset specification in the *BOX*.
442
<offset> = +<number>,<number>
445
<p>Many international media names are recognised by the program, in upper
446
and lower case, and can be shortened to their first few characters, as
447
long as unique. For instance 'A0', 'Let'. Distance names are like
448
'cm', 'inch', 'ft'.</p>
449
<p>Medias are typically not quadratic but rectangular, which means width
450
and hight differ. Thus using medianames is a bit tricky:</p>
451
<table class="docutils field-list" frame="void" rules="none">
452
<col class="field-name" />
453
<col class="field-body" />
455
<tr class="field"><th class="field-name">10x20cm:</th><td class="field-body">obviuos: 10 cm x 20 cm (portrait)</td>
457
<tr class="field"><th class="field-name">20x10cm:</th><td class="field-body">same as 10x20cm, since all boxes are rotated to portrait
462
<p>Now when using medianames it gets tricky:</p>
463
<table class="docutils field-list" frame="void" rules="none">
464
<col class="field-name" />
465
<col class="field-body" />
467
<tr class="field"><th class="field-name">1x1a4:</th><td class="field-body"><p class="first">same as approx. 21x29cm (21 cm x 29 cm, portrait)</p>
470
<tr class="field"><th class="field-name">1x2a4:</th><td class="field-body"><p class="first">same as approx. 21x58cm (21 cm x 58 cm, portrait)</p>
471
<p>This are two a4 pages put together at the <em>small</em> side: One
472
portrait page wide and two portrait pages high.</p>
475
<tr class="field"><th class="field-name">2x1a4:</th><td class="field-body"><p class="first">same as approx. 42x29cm, which is rotated to portrait and is
476
the same a 29x42cm (29 cm x 42 cm)</p>
477
<p class="last">This are two a4 pages put together at the <em>long</em> side: Two
478
portrait pages wide and one portrait page high.</p>
485
<div class="section" id="examples">
487
<table class="docutils field-list" frame="void" rules="none">
488
<col class="field-name" />
489
<col class="field-body" />
491
<tr class="field"><th class="field-name" colspan="2">pdfposter -mA3 -pA0 a4.pdf out.pdf:</th></tr>
492
<tr><td> </td><td class="field-body">Prints an A4 input file on 8 A3 pages, forming an A0 poster.</td>
494
<tr class="field"><th class="field-name" colspan="2">pdfposter -p3x3Let a4.pdf out.pdf:</th></tr>
495
<tr><td> </td><td class="field-body">Prints an inputfile on a poster of 3x3 Letter pages.</td>
499
<!-- not yet implemented: margins
500
:pdfposter -mA0 -w2x2i input.pdf out.pdf:
501
Enlarges an inputfile to print on a large-media A0 capable
502
device, maintaining 2 inch margins: -->
503
<table class="docutils field-list" frame="void" rules="none">
504
<col class="field-name" />
505
<col class="field-body" />
507
<tr class="field"><th class="field-name" colspan="2">pdfposter -mA0 input.pdf out.pdf:</th></tr>
508
<tr><td> </td><td class="field-body">Enlarges an inputfile to print on a large-media A0 capable
511
<tr class="field"><th class="field-name" colspan="2">pdfposter -s4 input.pdf out.pdf:</th></tr>
512
<tr><td> </td><td class="field-body">Enlarge an inputfile exactly 4 times, print on the default A4
513
media, and let <tt class="docutils literal">pdfposter</tt> determine the number of pages
518
<!-- not yet implemented
519
:pdfposter -mLegal -p1x1m -w10% -C5 input.pdf out.pdf:
520
Scale a postscript image to a poster of about 1 square meter,
521
printing on 'Legal' media, maintaining a 10% of 'Legal' size
522
as white margin around the poster. Print cutmark lines and grid
523
labels, but don't print cut mark arrow heads. -->
524
<table class="docutils field-list" frame="void" rules="none">
525
<col class="field-name" />
526
<col class="field-body" />
528
<tr class="field"><th class="field-name" colspan="2">pdfposter -m10x10cm -pa0 a4.pdf out.pdf:</th></tr>
529
<tr><td> </td><td class="field-body">Just to show how efficient <tt class="docutils literal">pdfposter</tt> is: This will create a file
530
containing 192 pages, but only 15 times as big as the single page.
531
With a4.pdf being a quite empty page, this ratio should be even
532
better for filled pages.</td>
536
<p>More examples including sample pictures can be found at
537
<a class="reference external" href="http://pythonhosted.org/pdftools.pdfposter/examples">http://pythonhosted.org/pdftools.pdfposter/examples</a></p>
538
<div class="section" id="examples-for-automatic-scaling">
539
<h2>Examples for automatic scaling</h2>
541
<li><p class="first">For printing 2 <em>portrait</em> A4 pages high (approx. 58cm) and let
542
pdfposter determine how many portrait pages wide, specify a lage
543
number of <em>vertical</em> pages. eg:</p>
545
<table class="docutils field-list" frame="void" rules="none">
546
<col class="field-name" />
547
<col class="field-body" />
549
<tr class="field"><th class="field-name" colspan="2">pdfposter -p999x2a4 testpage-wide.pdf out.pdf:</th></tr>
550
<tr><td> </td><td class="field-body"></td>
556
<li><p class="first">For printing 2 <em>landscape</em> A4 pages high (approx. 20cm) and let
557
pdfposter determine how many landscape pages wide, specify a lage
558
number of <em>horizontal</em> pages. eg:</p>
560
<table class="docutils field-list" frame="void" rules="none">
561
<col class="field-name" />
562
<col class="field-body" />
564
<tr class="field"><th class="field-name" colspan="2">pdfposter -p2x999a4 testpage-wide.pdf out.pdf:</th></tr>
565
<tr><td> </td><td class="field-body"></td>
574
<div class="section" id="see-also">
576
<p><tt class="docutils literal">poster</tt>(1),
577
<tt class="docutils literal">pdfnup</tt>(1) <a class="reference external" href="http://pypi.python.org/pypi/pdfnup/">http://pypi.python.org/pypi/pdfnup/</a>,
578
<tt class="docutils literal">pdfsplit</tt>(1) <a class="reference external" href="http://pypi.python.org/pypi/pdfsplit/">http://pypi.python.org/pypi/pdfsplit/</a>,
579
<tt class="docutils literal">pdfgrid</tt>(1) <a class="reference external" href="http://pypi.python.org/pypi/pdfgrid/">http://pypi.python.org/pypi/pdfgrid/</a></p>
580
<p>Project Homepage <a class="reference external" href="http://pythonhosted.org/pdftools.pdfposter/">http://pythonhosted.org/pdftools.pdfposter/</a></p>