Python 实现加密过的PDF文件转WORD格式
实现方法简介
许多文件都支持转换为PDF格式,诸如Word,Excel,PowerPoint,Cad以及图片格式。所以pdf从学校到职场,都可以看到pdf文件的身影。
为了保证了文件的安全性,正常情况下无法对pdf的内容进行编辑。但是相应的我们就无法修改pdf的内容,也不便于pdf资料的使用。虽然现在市面上有很多pdf转word软件,比如wps,但大多数的软件是要收费的,并且价格不菲。前些天就有人叫我帮她把pdf文档转成word的文档。因为写尽调报告需要去查看各种信评资料,往往这些资料都是pdf格式的文件,而且经常出现加密文档,为了方便查找和复制相关资料,将加密过的pdf文件转换成word文档就会便捷不少,提高使用效率。
于是想到写个程序,把pdf转成word文档。秉承着不要重复造轮子的想法,我首先在网上搜索了下相关代码。大多是针对未加密过的pdf文件来实现,本文结合加密文档的特殊性写了相关程序来实现这个功能。
支持加密文件的格式转换
代码效果
环境配置
1、pdfminer安装库命令:
pipinstallpdfminer3k
2、docx安装库命令:
pipinstallpython_docx
注:pdf中非图片构成的部分才能被成功转换:
#-*-coding:UTF-8-*- #!/usr/bin/python #-*-coding:utf-8-*- importsys importimportlib importlib.reload(sys) frompdfminer.pdfparserimportPDFParser,PDFDocument frompdfminer.pdfinterpimportPDFResourceManager,PDFPageInterpreter frompdfminer.converterimportPDFPageAggregator frompdfminer.layoutimport* frompdfminer.pdfinterpimportPDFTextExtractionNotAllowed importos #设置工作目录文件夹 os.chdir(r'c:/users/dicey/desktop/codes/pdf-docx') #解析pdf文件函数 defparse(pdf_path): fp=open('diya.pdf','rb')#以二进制读模式打开 #用文件对象来创建一个pdf文档分析器 parser=PDFParser(fp) #创建一个PDF文档 doc=PDFDocument() #连接分析器与文档对象 parser.set_document(doc) doc.set_parser(parser) #提供初始化密码 #如果没有密码就创建一个空的字符串 doc.initialize() #检测文档是否提供txt转换,不提供就忽略 ifnotdoc.is_extractable: raisePDFTextExtractionNotAllowed else: #创建PDf资源管理器来管理共享资源 rsrcmgr=PDFResourceManager() #创建一个PDF设备对象 laparams=LAParams() device=PDFPageAggregator(rsrcmgr,laparams=laparams) #创建一个PDF解释器对象 interpreter=PDFPageInterpreter(rsrcmgr,device) #用来计数页面,图片,曲线,figure,水平文本框等对象的数量 num_page,num_image,num_curve,num_figure,num_TextBoxHorizontal=0,0,0,0,0 #循环遍历列表,每次处理一个page的内容 forpageindoc.get_pages():#doc.get_pages()获取page列表 num_page+=1#页面增一 interpreter.process_page(page) #接受该页面的LTPage对象 layout=device.get_result() forxinlayout: ifisinstance(x,LTImage):#图片对象 num_image+=1 ifisinstance(x,LTCurve):#曲线对象 num_curve+=1 ifisinstance(x,LTFigure):#figure对象 num_figure+=1 ifisinstance(x,LTTextBoxHorizontal):#获取文本内容 num_TextBoxHorizontal+=1#水平文本框对象增一 #保存文本内容 withopen(r'test2.doc','a',encoding='utf-8')asf:#生成doc文件的文件名及路径 results=x.get_text() f.write(results) f.write('\n') print('对象数量:\n','页面数:%s\n'%num_page,'图片数:%s\n'%num_image,'曲线数:%s\n'%num_curve,'水平文本框:%s\n' %num_TextBoxHorizontal) if__name__=='__main__': pdf_path=r'diya.pdf'#pdf文件路径及文件名 parse(pdf_path)
提供初始化密码
如果没有密码就创建一个空的字符串
doc.initialize()
如果有密码就写入相应的密码
未知加密方式的pdf文件
如果pdf文件的加密方式不知道,影响文件的复制和打印等可以先利用chrome浏览器来取消加密逻辑
实现方式很简单,只需要将加密的文件拖入到chrome浏览器再选择打印另存为就可以,破除加密后再使用程序转换文件格式
总结
以上所述是小编给大家介绍的Python实现加密过的PDF文件转WORD格式,希望对大家有所帮助!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。