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

​PDF(Portable 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.pdf

all 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_text

text = extract_text('samples/simple1.pdf')

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

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

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

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

from io import StringIO

from pdfminer.converter import TextConverter

from pdfminer.layout import LAParams

from pdfminer.pdfdocument import PDFDocument

from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter

from pdfminer.pdfpage import PDFPage

from pdfminer.pdfparser import PDFParser

output_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_pages

from pdfminer.layout import LTTextContainer, LTChar

for 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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
利用Python来分析恶意代码PDF可以使用一些开源工具,如pefile、pydasm、pydbg等。以下是一个简单的例子,可以使用pefile来查找PE文件中的一些信息: ```python import pefile # 打开PE文件 pe = pefile.PE('malware.exe') # 打印PE文件的基本信息 print("[*] Image base: 0x%x" % pe.OPTIONAL_HEADER.ImageBase) print("[*] Entry point: 0x%x" % pe.OPTIONAL_HEADER.AddressOfEntryPoint) print("[*] Number of sections: %d" % pe.FILE_HEADER.NumberOfSections) # 打印每个节的信息 for section in pe.sections: print("[*] Section name: %s" % section.Name.decode('utf-8')) print("\t[*] Virtual address: 0x%x" % section.VirtualAddress) print("\t[*] Virtual size: 0x%x" % section.Misc_VirtualSize) print("\t[*] Size of raw data: %d" % section.SizeOfRawData) ``` 以上代码将打开一个名为“malware.exe”的PE文件,并打印一些基本信息,包括图像基址、入口点和节的数量。然后它将循环遍历每个节,并打印每个节的名称、虚拟地址、虚拟大小和原始数据大小。 另一个流工具是IDA Pro,它是一个交互式反汇编器和调试器。您可以使用Python脚本扩展IDA Pro的功能。例如,以下代码将使用IDA Pro分析PE文件,并查找包含字符串“malware”的函数: ```python import idaapi # 打开PE文件 idaapi.autoWait() idc.LoadFile('malware.exe') # 查找包含“malware”字符串的函数 search_str = 'malware' for func_ea in idautils.Functions(): func_name = idc.GetFunctionName(func_ea) for ref_ea in idautils.CodeRefsTo(func_ea, 1): if search_str in idc.GetDisasm(ref_ea): print("Found string in function: %s" % func_name) break ``` 以上代码将打开IDA Pro并加载PE文件“malware.exe”。然后它将循环遍历每个函数,并搜索代码引用到该函数的地方是否包含字符串“malware”。如果找到了包含该字符串的引用,代码将打印该函数的名称。 总的来说,Python和一些开源工具可以帮助您分析恶意代码PDF,但是要记住,这只是开始,您需要对恶意代码更深入的分析才能真正了解其为和意图。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值