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

openSUSE Build Service is sponsored by