高昂收费?你距离免费PDF编辑工具只差20行Python代码

PDFPortable Document Format,可携带文档格式)是一种以PostScript语言图像模型为基础,在不同电脑、打印机上都能够保持固定的格式。正是因为它这一特性,让PDF备受欢迎。

但是,PDF与很多文档之间的转换往往是不可逆的。

你可以轻松的把Word、PPT、Excel、图像转换成PDF。但是,想要再把PDF转换成图像、文本就变得非常复杂。

我曾经写过一篇利用Python语言处理PDF文档的方式,其中用到了一个第三方工具包PDFMiner

其实,诸如此类的工具包并不在少数。

本文要介绍的Pdfminer.six是原始PDFMiner的社区维护的分支。

它同样能够同PDF文档中提出信息,并且,它更加侧重读取和解析文本数据。它能够直接从PDF源代码中提取页面中的文本,同时可以获取位置、字体、颜色等信息。

因此,相对于大多数PDF处理工具包,Pdfminer.six在PDF文档处理方面做的更加彻底,效果也更好。

本文,就来介绍一下这个Python工具包的使用。

Pdfminer.six

安装

Pdfminer.six的安装和其他Python工具包一样,非常简单,直接通过pip命令就可以完成安装:

$ pip install pdfminer.six

提取PDF信息

Pdfminer.six提供了2种提取PDF信息的方式:

命名行

Python代码

首先,来看一下利用命令行提取PDF信息的方式。

Pdfminer.six的源代码中提供一些PDF处理工具,它们都被放置在源代码的tools目录下。因此,你可以克隆代码,直接在命令行下调用这些工具脚本提取PDF信息,例如:

$ python tools/pdf2txt.py example.pdfall the text from the pdf appears on the command line

除此之外,还有其他的工具脚本。比如,PDF文本对比、提取PDF内部结构。

其次,再来看一下通过Python代码提取PDF信息。

通过PDF代码提取PDF信息也分2种方式:

高阶接口

自定义

Pdfminer.six目前提供了3个用于PDF处理的高阶接口,它们分别是:

extract_text

extract_text_to_fp

extract_pages

如果,你想提取PDF中的页面或者其中的文本内容,可以直接调用这些高阶接口,没必要从头至尾实现一遍解析代码,例如:

from pdfminer.high_level import extract_texttext = extract_text('samples/simple1.pdf')

当然,PDF的处理场景远不止提取文本和页面这么简单。

有时候,还需要提取图像、字体等信息。

这时候命令行工具和高阶接口就无法胜任,就需要定制化的进行开发,需要用到Pdfminer.six的一些底层接口。

例如,从PDF文件中提取文本并将其保存到python变量中:

from io import StringIOfrom pdfminer.converter import TextConverterfrom pdfminer.layout import LAParamsfrom pdfminer.pdfdocument import PDFDocumentfrom pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreterfrom pdfminer.pdfpage import PDFPagefrom pdfminer.pdfparser import PDFParseroutput_string = StringIO()with open('samples/simple1.pdf', 'rb') as in_file: parser = PDFParser(in_file) doc = PDFDocument(parser) rsrcmgr = PDFResourceManager() device = TextConverter(rsrcmgr, output_string, laparams=LAParams()) interpreter = PDFPageInterpreter(rsrcmgr, device) for page in PDFPage.create_pages(doc): interpreter.process_page(page)print(output_string.getvalue())

此外,Pdfminer.six的强大之处在于,它还可以提取PDF文档中字体、大小等更加细节的信息,

from pdfminer.high_level import extract_pagesfrom pdfminer.layout import LTTextContainer, LTCharfor page_layout in extract_pages('test.pdf'): for element in page_layout: if isinstance(element, LTTextContainer): for text_line in element: for character in text_line: if isinstance(character, LTChar): print(character.fontname) print(character.size)

PDF中往往会有很多图像,通过Pdfminer.six内置的脚本,可以把PDF文档中的图像直接提取出来:

$ pdf2txt.py example.pdf --output-dir cats-and-dogs

这样,example.pdf文档中的所有图像都会被提取到cats-and-dogs文件夹下。

结语

PDF作为一种常用的文档格式,目前在网络上很容易就可以找到PDF处理方面的在线或者桌面工具。其中,有很多工具的确很良心。

但是,绝大多数工具都会对处理页数、文档大小有限制。超出限制,就需要付出一定的费用。

如果你有一定的Python开发基础,通过编写代码的方式可以很轻松的完成那些付费才能完成的事情。

而且,它还能够保护自己的隐私数据,避免PDF文档上传到服务器,造成信息泄露。

(0)

相关推荐

  • 如何使用python抽取pdf表格及文本,并保存到excel

    pdf是一种便携式文档格式,由Adobe公司设计.因为不受平台限制,且方便保存和传输,所以pdf非常受欢迎. 目前市场上有很多pdf工具,大部分是阅读类,也有支持对pdf的修改.转换等功能,但这部分工 ...

  • python读取pdf中的文本

    python处理pdf也是常用的技术了,对于python3来说,pdfminer3k是一个非常好的工具. pip install pdfminer3k 首先,为了满足大部分人的需求,我先给一个通用一点 ...

  • Python爬取CSDN文章,并制作成PDF文档

    Python爬取CSDN文章,并制作成PDF文档

  • 使用python将word文档转换为PDF文档

    对于windows系统的编程开发,微软一开始提供了基于VB语言的接口,后来又推出了.NET框架.对于word等offices套件的自动化操作,由于原生支持的特性,采用这些语言是最为方便且灵活的,唯一的 ...

  • 两行代码读取pdf、docx文件

    最近运行课件代码,发现pdf文件读取部分的函数失效.这里找到读取pdf文件的可运行代码,为了方便后续学习使用,我已将pdf和docx读取方法封装成pdfdocx包. pdfdocx 只有简单的两个读取 ...

  • 【Python 库】解析PDF文本及表格

    pdf 是个异常坑爹的东西,有很多处理 pdf 的库,但是没有完美的. 一.pdfminer3k pdfminer3k 是 pdfminer 的 python3 版本,主要用于读取 pdf 中的文本. ...

  • 读取pdf和docx文件,亲测有效

    做文本数据处理,我最怕遇到pdf和docx,一旦遇到了,都是双手开启无影指模式狂按快捷键.按的手抽,按的崩溃. 今天我大师兄查哥搞定了pdf文件的读取,知道此事后异常欣喜.在此基础上,我查找了docx ...

  • 别再问如何用 Python 提取 PDF 内容了

    导读 大家好,在之前的办公自动化系列文章中我们已经详细介绍了如何使用Python批量处理PDF文件,包括合并.拆分.水印. 今天我们再次回到PDF,详细讲解如何使用Python从PDF提取指定的信息. ...

  • 用python提取PDF表格内容保存到excel

    一 提取pdf方法介绍 任务是用python提取PDF里的表格文件到excel里面去.做为一个 学了一个周python的人来说当然像尝试一下看能不能做到,事实证明是可以的只是可能代码有点烂...... ...

  • 第107天: Python 解析 PDF

    上次给大家介绍了 Python 如何操作 Word 和 Excel ,而今天想为大家再介绍下,用 Python 如何解析 PDF ,PDF 格式不像前面两个那么规范,从它的表现来看,它更像是一张图片, ...