办公效率起飞了!Python 终于解放了我的双手
最近我在知乎受到一个付费问答,虽然开通了付费问答功能,但是我已经很久没有回答过提问者的问题。
由于时间和精力有限,抽不出整块的时间好好回答提问者的问题,又不愿意三言两语糊弄提问的同学,索性就不回答了。
但是,前几天有一个同学付费咨询我”如何用 Python 把 3 个 PDF 文件按交叉顺序合并在一起?“
的确,PDF、Word 作为工作和学习中经常会接触到的文档格式,很难避免与其打交道,今天,就来给大家介绍一下如何使用 Python 完成常用的 PDF、Word 编辑功能,再也不用为这项简单的事情付费了!
PDF 文档
PDF 是一种便携式文件格式,它包含文本、图像、图表等。
与纯文本文件不同,它是一种包含".pdf"扩展名的文件,由 Adobe 公司发明。
这种类型的文件与任何平台如软件、硬件和操作系统无关。
安装工具包
你需要安装一个名为pypdf2
的软件包,它可以处理扩展名为".pdf "的文件:
安装成功,会看到如下内容:
读取 PDF 文件并提取数据
我们只能从 pdf 文件中提取文本内容,因为 PyPDF2 在提取多媒体内容时有一个限制,logo、图片等无法从中提取。
上面的代码中的import
语句得到了 PyPDF2 模块。你需要使用open('pdfFileName' , 'openMode')
,其中pdfFilename
是文件名称,openMode
是rb
,即只读取二进制格式。
PyPDF2 有一个名为 "PdfFileReader"的方法,它接收新创建的对象 "pdfFileObject"。你现在可以从 "pdfFileObject "中访问名为 "numPages"的属性,它能给返回总页数。
你可以使用 pdfReaderObject 里面的'getPage(0)'方法来获取第 1 页。然后将结果存储在'firstPageObject'中,通过使用'extractText()'方法可以打印出该特定页面中的所有文本。
上面的代码给出了 pdf 文件的所有文本。但是,图像没有显示在终端,这一点用 pyPDF2 是无法获取到。
合并 PDF
你将把两个不同的 pdf 文件合并成一个 pdf 文件,首先需要获取 2 个用于测试的 PDF 文档。
我们需要从 PyPDF2 包中导入 PdfFileMerger 模块,它能够用于合并 pdf 文件。
指定'path',它表示文件所在的文件夹的路径。另外,要合并的 pdf 文件被包含在'pdf_files'的列表中。
首先,需要通过PdfFileMerger
创建一个合并对象,然后针对列表中的每个文件进行的遍历,其中合并是通过向'append'方法传递路径和文件来完成的。
最后,通过使用'merger.write()'可以获得最终的输出,在这里可以获得合并后的内容和新的 PDF 文件名。
上图显示了一个'merged.pdf',它由'test.pdf'和'test-1.pdf'的内容合并而成。
Word 文档
Word 文件由文件名末尾的".docx "扩展名组成。这些文件并不像纯文本文件那样只包含文本,而是包括富文本文件。富文本文件包含文件的不同结构,这些结构有大小、对齐、颜色、图片、字体等。
如果你有一个用于处理 Word 文档的应用程序,那将是最好的。适用于 Windows 和 Mac 操作系统的流行应用程序是 Microsoft Word,但它是一个付费订阅软件。
当然,也有一个免费的替代选择,如 "LibreOffice",它是一个预装在 Linux 中的应用程序。这些应用程序可以在 Windows 和 Mac 操作系统中下载。
本文,将介绍如何通过 Python 免费操作 Word 文档。
安装工具包
你需要安装一个名为 "python-docx"的软件包,它可以处理扩展名为".docx "的 word 文档。
编辑 Word 文档
你可以看到上面第一行中的 "document"模块是从 "docx "包中导入的。
第二行的代码通过 Document 对象的帮助生成了一个新的 word 文档。
使用'document.save()',文件名被保存为'first.docx'。
添加标题
上面的代码包含一个Document()
打开一个新文件,document.save('addHeader.docx')
被用来创建一个新编辑的 docx 文件。
你可以通过add_heading('text,' level=number)
方法添加标题,该方法将文本作为标题,标题级别从 0 到 4 开始。
上述代码给出的输出是一个新创建的'addedHeader.docx'文件,其中 0 级的标题是文本下面的横线,而 1 级的标题是主标题。
同样地,其他的标题是副标题,其字体大小依次递减。
添加段落
上述代码包含一个Document()
,它打开了一个新的文档文件,document.save('addParagraph.docx')
被用来创建一个新编辑的 docx 文件。你可以通过add_paragraph('text,' style='required_style')
方法添加标题,该方法接收文本,同时style
是一个可选的参数,可以使用'List Number'和'List Bullet'。
上述代码给出的输出是一个新创建的addedParagraph.docx
文件,在第一行有一个简单的段落。
同样,有一个标题,在它下面有一个有序的列表,包含一个编号为 1 和 2 的项目。
添加图片
上面的代码包含一个Document()
,它创建了一个新的文档文件,document.save('addPicture.docx')
用于创建一个新编辑的 docx 文件。
你可以通过使用add_picture()
来添加图片,它包含的第一个参数是cat-1.jpeg
是猫的图片的路径。
宽度和高度是可选的参数,默认为72 dp
,但我们为我们的目的使用了Inches
。
上述代码给出的输出是一个新创建的addedPicture.docx
文件,其中包含一张猫的图像,图像的宽度和高度都是 1.25 英寸。
读取 Word 文档
接下来,我们使用 Python 中读取一个 word 文档。
代码的第一行从docx
模块中导入 Document,用来传递所需的文档文件,并创建一个对象。obtainText
是一个函数,接收文件fullText.docx
。循环是针对每个段落进行的,这些段落由document.parages
访问,并使用append
方法插入到一个空列表中。
最后,该函数返回一个以”另起一行“结束的段落列表。
上面的输出给出了没有任何样式、颜色的纯文本。
接下来,你就可以解放双手,使用 Python 自动完成 PDF、Word 文档操作了!
版权声明: 本文为 InfoQ 作者【Jackpop】的原创文章。
原文链接:【http://xie.infoq.cn/article/7abf3587f6ab375b917261dde】。文章转载请联系作者。
评论