PyPdf:将每一页一分为二,用空格填充

PyPdf:将每一页一分为二,用空格填充,pdf,pypdf,Pdf,Pypdf,我有一个PDF文件(A4,纵向布局),每一页我都想把它分成一半高。输出文档也应该是A4和纵向布局,但每页的下半部分需要空白 我看到了,但不明白如何使用mediaBox添加空格 我对PyPDF2不是很了解,但我是这本书的作者,如果我理解你的问题,pdfrw当然可以很容易地做你想做的事。我需要更好地记录它,但我有一个预先存在的 将页面左右拆分的示例,将小报页面拆分为原始页面。下面是该示例的修改版本。此版本将从上到下拆分页面,并更改输出页面的大小,使其与输入页面匹配: #!/usr/bin/env p

我有一个PDF文件(A4,纵向布局),每一页我都想把它分成一半高。输出文档也应该是A4和纵向布局,但每页的下半部分需要空白


我看到了,但不明白如何使用mediaBox添加空格

我对PyPDF2不是很了解,但我是这本书的作者,如果我理解你的问题,pdfrw当然可以很容易地做你想做的事。我需要更好地记录它,但我有一个预先存在的 将页面左右拆分的示例,将小报页面拆分为原始页面。下面是该示例的修改版本。此版本将从上到下拆分页面,并更改输出页面的大小,使其与输入页面匹配:

#!/usr/bin/env python

'''
usage:   splitv.py my.pdf

Creates splitv.my.pdf

This is similar to unspread.py, in that it creates
a new file that has twice the pages of the old file.

It is different in two ways:

1) It splits pages top and bottom rather than left and right
2) The destination pages are the same size as the source pages,
   and the output is placed at the top.
'''

import sys
import os

from pdfrw import PdfReader, PdfWriter, PageMerge


def splitpage(src):
    ''' Split a page into two (top and bottom)
    '''
    # Yield a result for each half of the page
    for y_pos in (0, 0.5):

        # Create a blank, unsized destination page.
        page = PageMerge()

        # add a portion of the source page to it as
        # a Form XObject.
        page.add(src, viewrect=(0, y_pos, 1, 0.5))

        # By default, the object we created will be
        # at coordinates (0, 0), which is the lower
        # left corner.  To move it up on the page
        # to the top, we simply use its height
        # (which is half the source page height) as
        # its y value.
        page[0].y = page[0].h

        # When we render the page, the media box will
        # encompass (0, 0) and all the objects we have
        # placed on the page, which means the output
        # page will be the same size as the input page.
        yield page.render()


inpfn, = sys.argv[1:]
outfn = 'splitv.' + os.path.basename(inpfn)
writer = PdfWriter()
for page in PdfReader(inpfn).pages:
    writer.addpages(splitpage(page))
writer.write(outfn)

伟大的图书馆@PatrickMaupin,感谢您提供!这里我用它把一页分成两半: