zoukankan      html  css  js  c++  java
  • 还在傻傻付费合并 PDF 文件?

    原文地址请点击这里

    @

    前言

    工作中,用到 PDF 文件的时候,真是太常见了。但你会发现,很多时候,我们需要将几份 PDF 合并为一个 PDF 文件,这个时候你往往会去百度,然后打开一个付费的 PDF 合并网站开始合并。

    还在傻傻付费合并 PDF 文件?

    今天,我给你分享一个一键合并 PDF 的办公自动化方案!还是用我们熟悉的 Python 语言,不过这回我们会调用 PyPDF2 这个模块。具体如何使用这个模块,我这里就不详细说了,具体看 http://pythonhosted.org/PyPDF2/ 这个官方说明。今天,我们要用到什么,我就教大家什么,毕竟办公中,你也没时间去学习那些跟工作没有什么关系的东西。

    我们的任务

    将 1.pdf 和 2.pdf 这两个文档合并成 3.pdf。
    在这里插入图片描述

    理清工作流程

    做事情之前,你必须要明白你做事情的逻辑,也就是工作流程,这个对于我们解决重复性工作而言,是必须要做的:

    • 读取 1.pdf 的文件,写入 3.pdf
    • 读取 2.pdf 的文件,写入 3.pdf

    看似合并的一个简单操作,确实不是那么简单的合并的。

    让 Python 开干

    导入 PyPDF2 模块:

    from PyPDF2 import PdfFileReader, PdfFileWriter
    

    这两个方法对应了 pdf 文件的读取和写入,其中 PdfFileReader 能读取文件,PdfFileWriter 可以写入文件。

    注意:读取必须一页一页地读取并写入,也就是说不能一下子把整个文件都读取了再写入,必须读取一页写入一页。

    幸运的是,我们样例** 1.PDF 和 2.pdf** 都只有一页,这里的提醒是特别给小伙伴准备的,可千万别跳到坑里去了。

    from PyPDF2 import PdfFileReader, PdfFileWriter
    
    path = r'C:Usersxxxxxx'
    pdf_writer = PdfFileWriter()
    
    for i in range(1, 2):
        pdf_reader = PdfFileReader('E:demo{}.pdf'.format(i))
        for page in range(pdf_reader.getNumPages()):
            pdf_writer.addPage(pdf_reader.getPage(page))
    
    with open('E:demo3.pdf', 'wb') as out:
        pdf_writer.write(out)
    

    细心地你会发现,合并在循环中,但是输出在循环外,没错,这就印证了我们之前说的“读取一页写入一页”。with 这句话,新建了 3.pdf,并由写入器的 pdf_writer.write(out) 方法输出。

    尾声

    下一期,我给你科普一下如何让 Python 帮我们拆分 PDF。

  • 相关阅读:
    js代码编写规范
    mysql数据库的水平拆分与垂直拆分
    git使用WebHook实现自动构建
    解决php
    laravel为模型中所有查询统一添加WHERE条件
    centos7+ 安装 php7.2
    nginx配置https
    git常用命令
    php如何应对秒杀抢购高并发思路
    nginx配置优化+负载均衡+动静分离详解
  • 原文地址:https://www.cnblogs.com/CoXieLearnPython/p/14763873.html
Copyright © 2011-2022 走看看