我正在创建一个python脚本,可以修改要在书籍部分打印的pdf文件。由于ubuntu打印设置中没有此类功能。
PyPDF2是一个很棒的工具,除了增加余量之外,我能够做到我想做的一切。
例如,考虑一下这本书 http://www.edwardothorp.com/sitebuildercontent/sitebuilderfiles/beatthemarket.pdf 它需要一些余量,以便在书中有一些空间来绑定它们。 我已经找到了如何将内容移动几个像素,但是"画布"的尺寸。没有改变,所以有些内容被切断了。
我可以调整"页面大小"与PyPDF2通过改变媒体盒大小,但我只裁剪页面,我不能增加他们的大小。 为了增加利润,我必须增加规模。 我也无法缩小内容,因为出于某种原因,页面大小随之缩小。
如果您想要打印书籍,这是脚本。 http://pastebin.com/LGYhKYu1 当然,它只适用于已经有一些边距的pdf,所以你只需要移动内容。
如果有人能指出如何使用PyPDF2向pdf添加边距,我将非常感激,我必须忽视一些事情。
谢谢!
答案 0 :(得分:5)
似乎没有专用方法,但您可以创建所需大小的空白页面,然后将您的内容与空白页面合并
page = PageObject.createBlankPage(
yourPage.mediaBox.getWidth () + 2 * margin,
yourPage.mediaBox.getHeight() + 2 * margin)
page.mergeScaledTranslatedPage( yourPage, scale, leftMargin, bottomMargin)
...
output = PdfFileWriter()
output.addPage(page)
答案 1 :(得分:0)
我本人正试图弄清这一点。我的目标是裁剪B5页面的内容并适合小册子使用
bind_margin = 60
for pnum in tqdm(range(numpage)):
page = inpdf.getPage(pnum)
# Trim margins from right and left
page.trimBox.lowerLeft = tuple([a+b for a, b in zip(page.trimBox.lowerLeft, (50, 0))])
page.trimBox.upperRight = tuple([a-b for a, b in zip(page.trimBox.upperRight, (50, 0))])
page.cropBox.lowerLeft = tuple([a+b for a, b in zip(page.cropBox.lowerLeft, (50, 0))])
page.cropBox.upperRight = tuple([a-b for a, b in zip(page.cropBox.upperRight, (50, 0))])
# create empty A4 size page
emptyPage = pdf.PageObject.createBlankPage(width=tarw, height=tarh)
margin_available = tarw + page.mediaBox.lowerLeft[0] - page.mediaBox.upperRight[0]
if pnum%2==0:
tx = bind_margin
else:
tx = margin_available - bind_margin
emptyPage.mergeTranslatedPage(page, tx, 180)
outpdf.addPage(emptyPage)