【问题标题】:How can I merge two PDF files without overlapping content如何在不重叠内容的情况下合并两个 PDF 文件
【发布时间】:2021-12-01 16:08:03
【问题描述】:

使用另一个 stackoverflow 问答,我能够找到部分解决我正在尝试做的事情的代码Merge PDF files

但是,此修改后的代码会导致两个 PDF 的内容相互重叠。我正在尝试将它们堆叠或垂直连接结果:

例子:

  • PDF1 内容 -> “Hello World”
  • PDF2 内容 -> “我是比尔”

以下代码会产生以下重叠图像:


所需的结果如下所示:

使用的代码导致图像重叠:

import pdfrw
dirPATH = r'c:\users\<username>\projects\concat_pdfs'
pdf1 = os.path.join(dirPATH, 'PDF1.pdf')
pdf2 = os.path.join(dirPATH, 'PDF2.pdf')

def concat_pdfs(pdf1, pdf2, output):
    form = pdfrw.PdfReader(pdf1)
    olay = pdfrw.PdfReader(pdf2)
    
    for form_page, overlay_page in zip(form.pages, olay.pages):
        merge_obj = pdfrw.PageMerge()
        overlay = merge_obj.add(overlay_page)[0]
        pdfrw.PageMerge(form_page).add(overlay).render()
        
    writer = pdfrw.PdfWriter()
    writer.write(output, form)
    
concat_pdfs(section1, section2, 'result.pdf')

提前致谢!

【问题讨论】:

    标签: python python-3.x pdf pdfrw


    【解决方案1】:

    你试过了吗

    
    def combine_pdfs(dir_path1, dir_path2, save_path):
        pdf1 = pdfrw.PdfReader(dir_path1)
        pdf2 = pdfrw.PdfReader(dir_path2)
        pdf_writer = pdfrw.PdfWriter()
        for page in pdf1.pages:
            pdf_writer.addpage(page)
        for page in pdf2.pages:
            pdf_writer.addpage(page)
        pdf_writer.write(save_path)
    
    

    【讨论】:

    • 运行此代码时,它会产生与我目前得到的相同的重叠结果。希望文本在页面上显示为不重叠(两条单独的行)。不过谢谢。
    • 我使用该功能合并了两个 pdf,并且成功且没有重叠。你是如何创建你的 pdf 的?
    【解决方案2】:

    这是一个使用 PyPDF2 库的示例:

      merger = PdfFileMerger()
      for filename in files:
        f = files[filename]
        loc = "/tmp/" + secure_filename(filename).replace(".pdf", "") + "_" + str(time.time()) + ".pdf"
        f.save(loc)
        f.close()
        reader = PdfFileReader(loc, "rb")
        merger.append(reader)
      dest = "/tmp/merged_" + str(time.time()) + ".pdf"
      merger.write(dest)
    

    这是另一个使用pike pdf

      pdf = Pdf.new()
      for filename in files:
        f = files[filename]
        loc = "/tmp/" + secure_filename(filename).replace(".pdf", "") + "_" + str(time.time()) + ".pdf"
        f.save(loc)
        f.close()
        reader = Pdf.open(loc)
        pdf.pages.extend(reader.pages)
      dest = "/tmp/merged_" + str(time.time()) + ".pdf"
      pdf.save(dest)
    

    导入可能类似于:

    import time
    import pdfkit
    import os
    from PyPDF2 import PdfFileMerger, PdfFileReader
    from werkzeug.utils import secure_filename
    from pikepdf import Pdf
    

    【讨论】:

    • 这两段代码将每个 PDF 合并到新 PDF 的自己的页面上。我需要将内容合并到一个 PDF 页面上。 PDF1 的内容(换行符)+ PDF2 的内容。没有分页符...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    • 1970-01-01
    • 2019-01-11
    • 1970-01-01
    相关资源
    最近更新 更多