我正在创建一个python脚本,可以修改要打印在书节中的pdf文件。因为在ubuntu打印设置中没有这样的功能。
PyPDF2是一个很棒的工具,我可以用它做任何我想做的事情,除了添加边距。
例如,考虑这本书。
http://www.edwardothorp.com/sitebuildercontent/sitebuilderfiles/beatthemarket.pdf它需要一些页边距,以便在书中有一些空间来装订它们。我已经找到了如何将内容移动几个像素,但“画布”的大小不变,因此一些内容被切断。
我可以用PyPDF2通过改变mediabox的大小来调整“页面大小”,但我只能裁剪页面,不能增加它们的大小。为了增加边距,我必须增加大小。我也不能缩小内容,因为由于某些原因,页面大小也会随之缩小。
如果你想打印一本书,这是一个脚本。当然,它只适用于已经有一些页边距的http://pastebin.com/LGYhKYu1,所以你只需要移动内容即可。
如果有人能指出如何用PyPDF2给pdf增加页边距,我将不胜感激,我一定是忽略了什么。
谢谢!
发布于 2015-06-29 21:53:08
似乎没有专门的方法,但您可以创建一个所需大小的空页面,然后将内容与空页面合并
page = PageObject.createBlankPage(
yourPage.mediaBox.getWidth () + 2 * margin,
yourPage.mediaBox.getHeight() + 2 * margin)
page.mergeScaledTranslatedPage( yourPage, scale, leftMargin, bottomMargin)
...
output = PdfFileWriter()
output.addPage(page)
发布于 2019-08-28 18:52:37
我自己也在试图弄清楚这一点。我的目标是裁剪一个B5页面内容,并使其适合A4中的小册子
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)
https://stackoverflow.com/questions/26204307
复制相似问题