Как сдвинуть все страницы документа PDF вправо на один дюйм?

Я хочу сдвинуть все страницы существующего документа pdf вправо на один дюйм, чтобы в них можно было пробить три отверстия, не затрагивая содержимое. Документы pdf уже будут созданы, поэтому изменить способ их создания невозможно.

Похоже, что iText может сделать это из предыдущего вопроса .

Что представляет собой эквивалентная библиотека (или способ сделать это) для C ++ или Python?

Если она зависит от платформы, мне нужна такая, которая будет работать в Linux.

Обновление: Я решил опубликовать небольшой сценарий, который написал для этого, на случай, если кто-то еще найдет эту страницу и ей понадобится.

Рабочий код благодаря предложению Скотта Андерсона:

rightshift.py

#!/usr/bin/python2
import sys
import os
from  pyPdf import PdfFileReader, PdfFileWriter

#not sure what default user space units are. 
# just guessed until current document i was looking at worked
uToShift = 50;

if (len(sys.argv) < 3):
  print "Usage rightshift [in_file] [out_file]"
  sys.exit()

if not os.path.exists(sys.argv[1]):
  print "%s does not exist." % sys.argv[1]
  sys.exit()

pdfInput = PdfFileReader(file( sys.argv[1], "rb"))
pdfOutput = PdfFileWriter()

pages=pdfInput.getNumPages()

for i in range(0,pages):
  p = pdfInput.getPage(i)
  for box in (p.mediaBox, p.cropBox, p.bleedBox, p.trimBox, p.artBox):
    box.lowerLeft = (box.getLowerLeft_x() - uToShift, box.getLowerLeft_y())
    box.upperRight = (box.getUpperRight_x() - uToShift, box.getUpperRight_y())
  pdfOutput.addPage( p )

outputStream = file(sys.argv[2], "wb")
pdfOutput.write(outputStream)
outputStream.close()

8
задан Community 23 May 2017 в 12:07
поделиться