如何使用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
相关产品推荐
相关产品推荐

