如何使用python将pdf文件的页面合并为单个垂直组合页面

问题描述 投票:0回答:1

我已经在 pypdf 和 pdfrw 中尝试过 merge_page 方法,但它们将一页固定在另一页上,我该如何继续? 下面的代码我尝试过,与两个模块类似

from pdfrw import PdfReader, PdfWriter, PageMerge

def merge_pdf_pages(input_file='input.pdf'):
    # Read the input PDF file
    reader = PdfReader(input_file)
    writer = PdfWriter()
    pages = PageMerge()
    for page in reader.pages:
        pages.add(page)
    writer.addpage(pages.render())
    with open("output.pdf",'wb') as file:
        writer.write(file)
# Example usage
merge_pdf_pages('input.pdf')

目前以下方式的暴力破解还不完整,仅供参考

def main(input_file=None,max_dim_val=3480):
    input_file = 'input.pdf'
    try:
        pdf = PdfReader(input_file)
        if not input_file.endswith('.pdf'):
            return 'File is not a pdf'
        if pdf.is_encrypted:
            return 'File is encrypted'
    except FileNotFoundError:
        return 'File not found'
    writer = PdfWriter()
    for page in pdf.pages:
        _mb = page.mediabox
        print((_mb.left,_mb.bottom,_mb.right,_mb.top))
        # print(height,width)
        while _mb.top > max_dim_val:
            page.mediabox = RectangleObject((_mb.left,_mb.top-max_dim_val,_mb.right,_mb.top))
            print(page.mediabox.height)
            print(page,'--------------------------------------')
            writer.add_page(page)
            _mb.top -= max_dim_val
    with open("output.pdf",'wb') as file:
        writer.write(file)

我基本上已经尝试了所有方法,还有没有办法通过操作文件字节来做到这一点?

python-3.x pdf pdf-generation pypdf pdfrw
1个回答
0
投票

将多个 PDF 混合到一张纸中通常由经过培训的图形艺术家完成,他们了解与计算机化 PDF 设计相关的编程问题。

合成器或拼版器将使用多种简单方法微调“拼版”或“合成”,但实际上它只是以不同比例(或相同比例)重新打印

在这里,我可以在浏览器 PDF 阅读器中以图形方式调整最基本的此类“N-UP”方法,但使用单个编程命令行的复杂性将相似。

最复杂的可能是 40 页作为十版,其中矩阵计算将用于使用折叠、狭缝和出血盒在 LaTeX 中进行“小册子”制作

在为桌面“出版物”设计程序时,数学可能很复杂,但只是使用样板进行重复。 https://tex.stackexchange.com/a/490408

既然你在问题中给出的线索很少?我必须从“一个高于另一个”推测这意味着 1 个肖像上有 2 个风景

程序和人类作曲家之间的区别可以在这里看到。编程结果从左到右,但是人类查看器将通过 R2L 设置来设置这四张纸。

© www.soinside.com 2019 - 2024. All rights reserved.