Python实现加密过的PDF文件转字格式

  

  

许多文件都支持转换为PDF格式,诸如Word, Excel, PowerPoint, Cad以及图片格式,所以PDF从学校到职场,都可以看到PDF文件的身影。

  

为了保证了文件的安全性,正常情况下无法对pdf的内容进行编辑。但是相应的我们就无法修改pdf的内容,也不便于pdf资料的使用。虽然现在市面上有很多pdf转字软件,比如wps,但大多数的软件是要收费的,并且价格不菲。前些天就有人叫我帮她把pdf文档转成词的文档。因为写尽调报告需要去查看各种信评资料,往往这些资料都是pdf格式的文件,而且经常出现加密文档,为了方便查找和复制相关资料,将加密过的pdf文件转换成词文档就会便捷不少,提高使用效率。

  

于是想到写个程序,把pdf转成词文档。秉承着不要重复造轮子的想法,我首先在网上搜索了下相关代码。大多是针对未加密过的pdf文件来实现,本文结合加密文档的特殊性写了相关程序来实现这个功能。

  

  

代码效果

  

环境配置

  

1, pdfminer安装库命令:

  

<代码> pip安装pdfminer3k

  

2,多克斯安装库命令:

  

<代码> pip安装python_docx

  

注:pdf中非图片构成的部分才能被成功转换:

  

        # - * -编码:utf - 8 - *   # !/usr/bin/python   # - * -编码:utf - 8 - *   导入系统   进口importlib   importlib.reload(系统)   从pdfminer。pdfparser进口pdfparser PDFDocument   从pdfminer。pdfinterp进口PDFResourceManager PDFPageInterpreter   从pdfminer。转换器进口PDFPageAggregator   从pdfminer。布局导入*   从pdfminer。pdfinterp进口PDFTextExtractionNotAllowed   进口操作系统   #设置工作目录文件夹   os.chdir (r 'c:/用户/冒险/桌面/编码/pdf-docx”)   #解析pdf文件函数   def解析(pdf_path):   fp=(“迪亚开放。pdf, rb) #以二进制读模式打开   #用文件对象来创建一个pdf文档分析器   解析器=PDFParser (fp)   文#创建一个PDF档   医生=PDFDocument ()   #连接分析器与文档对象   parser.set_document (doc)   doc.set_parser(解析)   #提供初始化密码   #如果没有密码就创建一个空的字符串   doc.initialize ()   #检测文档是否提供txt转换,不提供就忽略   如果不是doc.is_extractable:   提高PDFTextExtractionNotAllowed   其他:   #创建PDf资源管理器来管理共享资源   rsrcmgr=PDFResourceManager ()   #创建一个PDF设备对象   laparams=laparams ()   设备=PDFPageAggregator (rsrcmgr laparams=laparams)   #创建一个PDF解释器对象   翻译=PDFPageInterpreter (rsrcmgr,设备)   #用来计数页面,图片,曲线,图中,水平文本框等对象的数量   num_page、num_image num_curve、num_figure num_TextBoxHorizontal=0, 0, 0, 0, 0   #循环遍历列表,每次处理一个页面的内容   在doc.get_pages页面():# doc.get_pages()获取页面列表   num_page +=1 #页面增一   interpreter.process_page(页面)   #接受该页面的LTPage对象   布局=device.get_result ()   x的布局:   如果isinstance (x, LTImage): #图片对象   num_image +=1   如果isinstance (x, LTCurve): #曲线对象   num_curve +=1   如果isinstance (x, LTFigure): #图对象   num_figure +=1   如果isinstance (x, LTTextBoxHorizontal): #获取文本内容   num_TextBoxHorizontal +=1 #水平文本框对象增一   #保存文本内容   与(r 'test2开放。医生”、“一个”,编码=皍tf - 8”)作为f: #生成医生文件的文件名及路径   结果=x.get_text ()   f.write(结果)   f.write(“\ n”)   打印(“对象数量:\ 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文件路径及文件名   解析(pdf_path)      

提供初始化密码

  

如果没有密码就创建一个空的字符串

  

<代码> doc.initialize()

  

如果有密码就写入相应的密码

  

  

如果pdf文件的加密方式不知道,影响文件的复制和打印等可以先利用chrome浏览器来取消加密逻辑

  

实现方式很简单,只需要将加密的文件拖入到chrome浏览器再选择打印另存为就可以,破除加密后再使用程序转换文件格式

  

  

以上所述是小编给大家介绍的Python实现加密过的PDF文件转字格式,希望对大家有所帮助!

Python实现加密过的PDF文件转字格式