美文网首页
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