You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PyPDF3在合并两页的中间绘制线条?附示例代码

用PyPDF3合并PDF页并添加分隔线的实现方法

完全可以实现这个需求,PyPDF3的PageObject支持直接在页面上绘制图形元素,包括分隔线。只需在你的现有代码中添加几行绘制线条的逻辑即可。

修改后的完整代码

from PyPDF3 import PdfFileWriter, PdfFileReader
from PyPDF3.pdf import PageObject

pdf_file = "Plan.pdf"

inputPDF = PdfFileReader(open(pdf_file, "rb"), strict=False)
outputPDF = PdfFileWriter()

for x in range(0, inputPDF.numPages, 2):
    page1 = inputPDF.getPage(x).rotateClockwise(90)
    page2 = inputPDF.getPage(x + 1).rotateClockwise(90)
    
    total_width = max([page1.mediaBox.upperRight[0], page2.mediaBox.upperRight[0]])
    total_height = page1.mediaBox.upperRight[1] + page2.mediaBox.upperRight[1]
    
    new_page = PageObject.createBlankPage(None, total_width, total_height)
    
    new_page.mergeTranslatedPage(page1, 0, page1.mediaBox.upperRight[1])
    new_page.mergeTranslatedPage(page2, 0, 0)    
    
    # 添加分隔线:计算线条位置,设置样式并绘制
    divider_y = page1.mediaBox.upperRight[1]  # 两页拼接的交界位置
    new_page.setStrokeColorRGB(0, 0, 0)  # 设置线条颜色为黑色
    new_page.setLineWidth(1)  # 设置线条宽度为1pt
    new_page.addLine(0, divider_y, total_width, divider_y)  # 绘制水平线
    
    outputPDF.addPage(new_page.rotateCounterClockwise(90))
    
outputFile = "Merged_Plan.pdf"
outputPDF.write(open(outputFile, "wb"))

关键说明

  • 分隔线的位置通过divider_y = page1.mediaBox.upperRight[1]确定,正好是page1和page2拼接的交界点
  • setStrokeColorRGB()用于设置线条颜色,参数是红、绿、蓝的0-1浮点数(0为无,1为最深)
  • setLineWidth()设置线条粗细,单位是点(pt)
  • addLine()方法接收四个参数:起点x、起点y、终点x、终点y,这里绘制的是横跨整个页面宽度的水平线,页面旋转后会变成竖线,正好分隔合并后的左右两页

内容的提问来源于stack exchange,提问作者Charles Dy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 15:24:19