File 0003-Add-xoffset-percent-and-yoffset-percent-options.patch of Package pdfposter
From e91c48e829657ed7ffd482230c007f5862d2467c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Klaus=20K=C3=A4mpf?= <kkaempf@suse.de>
Date: Mon, 29 Feb 2016 13:09:22 +0100
Subject: [PATCH 3/4] Add --xoffset-percent and --yoffset-percent options
---
pdfposter.rst | 2 ++
pdftools/pdfposter/__init__.py | 14 ++++++++++----
pdftools/pdfposter/cmd.py | 4 ++++
3 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/pdfposter.rst b/pdfposter.rst
index f38ba80fb137..0bb56de8fa0e 100644
--- a/pdfposter.rst
+++ b/pdfposter.rst
@@ -81,6 +81,8 @@ General Options
margins instead of printing the entire images of the page. What is
technically an overlap, now closes the gap.
+-x, --xoffset-percent shift the grid of pages horizontally (percent of the output page width)
+-y, --yoffset-percent shift the grid of pages vertically (percent of the output page height)
Defining Input
diff --git a/pdftools/pdfposter/__init__.py b/pdftools/pdfposter/__init__.py
index 34d6938ee613..62a1a4d7dbbb 100755
--- a/pdftools/pdfposter/__init__.py
+++ b/pdftools/pdfposter/__init__.py
@@ -280,7 +280,10 @@ def _scale_pdf_page(outpdf, page, factor):
page[NameObject('/Contents')] = outpdf._addObject(content)
-def posterize(outpdf, page, mediabox, posterbox, scale, use_ArtBox=False, overlap=0.02, overlap_reduces_scale=True, trimpage=False):
+def posterize(outpdf, page, mediabox, posterbox, scale, use_ArtBox=False,
+ overlap=0.02, overlap_reduces_scale=True,
+ trimpage=False,
+ x_offp=.0, y_offp=.0):
"""
page: input page
mediabox : size secs of the media to print on
@@ -312,10 +315,10 @@ def posterize(outpdf, page, mediabox, posterbox, scale, use_ArtBox=False, overla
trimbox = rectangle2box(page.artBox)
else:
trimbox = rectangle2box(page.trimBox)
- h_pos = float(trimbox['offset_x'])
+ h_pos = float(trimbox['offset_x']) + x_offp*h_step*0.01
h_max, v_max = float(trimbox['width']), float(trimbox['height'])
for col in range(ncols):
- v_pos = float(trimbox['offset_y']) + (nrows-1) * v_step
+ v_pos = float(trimbox['offset_y']) + (nrows-1) * v_step + y_offp*v_step*0.01
for row in range(nrows):
log(17, 'Creating page with offset: %.2f %.2f' % (h_pos, v_pos))
newpage = copyPage(page)
@@ -371,7 +374,10 @@ def main(opts, infilename, outfilename, password_hook=password_hook):
page = inpdf.getPage(i)
log(19, '---- processing page %i -----', i+1)
posterize(outpdf, page, opts.media_size, opts.poster_size, opts.scale,
- opts.use_ArtBox, opts.overlap_percent*0.01, opts.overlap_reduces_scale, opts.trimpage)
+ opts.use_ArtBox,
+ opts.overlap_percent*0.01, opts.overlap_reduces_scale,
+ opts.trimpage,
+ opts.xoffset_percent, opts.yoffset_percent)
if not opts.dry_run:
outpdf.write(open(outfilename, 'wb'))
diff --git a/pdftools/pdfposter/cmd.py b/pdftools/pdfposter/cmd.py
index 6c2035b6c19d..c900b6858285 100644
--- a/pdftools/pdfposter/cmd.py
+++ b/pdftools/pdfposter/cmd.py
@@ -113,6 +113,10 @@ def run():
help='Image overlap (default: %g).' % DEFAULT_OVERLAP_PERCENT)
group.add_option('-S', '--overlap-reduces-scale', action='store_true', default=False,
help='When Overlapping (-O), make the real poster overlap_percent smaller.')
+ group.add_option('-x', '--xoffset-percent', type=float, default = 0,
+ help='shift the grid of pages horizontally (percent of the output page width).')
+ group.add_option('-y', '--yoffset-percent', type=float, default = 0,
+ help='shift the grid of pages vertically (percent of the output page height).')
opts, args = parser.parse_args()
--
2.7.1