美文网首页
python分割单页pdf

python分割单页pdf

作者: Pr_Chen | 来源:发表于2022-01-13 14:31 被阅读0次

思维导图导出的pdf为超长单页,打印时需要打印到多张A4纸上拼接起来,但是打印店老板不知怎么操作,于是自己分割成多页的pdf

  1. 先试了导出成长图,然后按照网上的教程用windows画图打开后通过打印的方式导出成pdf,这个方案是导出的pdf不够清晰,文字有黑色阴影
  2. 后来试了将长图拖到Chrome中,通过Chrome的打印导出成pdf,结果打印出来也是不清晰
    看来先导出成图片再导出成pdf的方式就是不清晰,于是发现wps上有分割pdf的功能,但是需要vip才能使用,于是自己用python分割
from PyPDF4 import PdfFileReader, PdfFileWriter
import math

input_file_path= '1.pdf'
output_file_path= '2.pdf'

pdf_input = PdfFileReader(open(input_file_path, 'rb'))
pdf_output = PdfFileWriter()

page0 = pdf_input.getPage(0)
width = float(page0.mediaBox.getWidth())
height = float(page0.mediaBox.getHeight())

# 这里是A4横版打印,按A4比例来计算每页的高度,如果是竖版则是page_height = width * 297 / 210
page_height = width * 210 / 297

new_page_count = math.ceil(height / page_height)

for i in range(new_page_count):
    pdf_input = PdfFileReader(open(input_file_path, 'rb'))
    new_page = pdf_input.getPage(0)

    y = page_height * i

    new_page.mediaBox.lowerLeft = (0, height - page_height * (i + 1))
    new_page.mediaBox.lowerRight = (width, height - page_height * (i + 1))
    new_page.mediaBox.upperLeft = (0, height - y)
    new_page.mediaBox.upperRight = (width, height - y)
    pdf_output.addPage(new_page)

pdf_output.write(open(output_file_path, 'wb'))

相关文章

网友评论

      本文标题:python分割单页pdf

      本文链接:https://www.haomeiwen.com/subject/qopncrtx.html