Я хочу сместить все страницы существующего 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()