pdf,搜索相关路径下pdf文档,把pdf文档移动到指定的路径下,再对该路径下的pdf文档进行转换

缺点:无法转换带有图片的pdf文档,转换后的文档格式问题

安装相应的库

1)pip install pdfminer3k  是pdfminer的Python 3端口

2)安装docx库

pip install python_docx

使用了os.walk对特定路径下的pdf文档进行查找,并对该文档进行移动

import  os
import shutil
import importlib
import sys
import re
def load_file():walk = os.walk(r'C:\Users\ALFIEL\Desktop\20190527')i=1for root, dirs,files in walk:print((root,dirs,files))for name in files:if len(re.findall('(\w)\.pdf',name))>=1:#添加条件对pdf文件进行筛选shutil.move(os.path.join(root,name), "C:\\Users\\SALFIEL\\Desktop\\pdfdocement\\"+str(i)+".pdf")i+=1load_file()

转换完整的代码如下:

#pdf转换器
from pdfminer.pdfparser import PDFParser, PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter,process_pdf
from pdfminer.layout import LAParams
from pdfminer.converter import PDFPageAggregator
from pdfminer.pdfinterp import PDFTextExtractionNotAllowed
from docx import Document
from pdfminer.layout import *
document = Document()
import warnings
warnings.filterwarnings("ignore")
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from io import StringIO
from urllib.request import urlopen
import pandas as pd
import  os
def readPDF(pdfFile):#读取pdf文件#创建PDf 资源管理器 来管理共享资源rsrcmgr = PDFResourceManager()retstr = StringIO()#数据保存到内存中laparams = LAParams()device = TextConverter(rsrcmgr, retstr, laparams=laparams)process_pdf(rsrcmgr, device, pdfFile)device.close()content = retstr.getvalue()retstr.close()return content
def save_to_file(file_name, contents):#可以存储为相应的格式的文档,单纯以文字的pdf转换fh = open(file_name, 'w',encoding='utf-8')#若没有encoding='utf-8'则会爆出gbk编码错误。写入txt,csv需要转换格式utf-8fh.write(contents)fh.close()# save_to_file('mobiles.txt', 'your contents str')def main():#当某个目录下面寻找pdf文档文件并把它移动到某个路径下面#进行txt或则csv的转换walk=os.walk(r"C:\Users\ALFIEL\Desktop\pdfdocement")for root, dirs,files in walk:for name in files:if len(re.findall('(\w)\.pdf',name))>=1:#添加条件对pdf文件进行筛选pdfFile = open("{}".format(os.path.join(root,name)),'rb')outputString = readPDF(pdfFile)save_to_file('c.csv',outputString)def save_to_doxc(file_name,path):#以二进制读取打开文件fn = open(file_name,'rb')#用文件对象创建pdf文档分析器parser = PDFParser(fn)#创建一个pdf文档doc = PDFDocument()#连接分析器与文档对象parser.set_document(doc)doc.set_parser(parser)# 提供初始化密码# 如果没有密码 就创建一个空的字符串doc.initialize()# 检测文档是否提供txt转换,不提供就忽略if not doc.is_extractable:raise PDFTextExtractionNotAllowedelse:resource = PDFResourceManager()laparams = LAParams()device = PDFPageAggregator(resource,laparams=laparams)# 创建一个PDF解释器对象interpreter = PDFPageInterpreter(resource,device)num_page, num_image, num_curve, num_figure, num_TextBoxHorizontal = 0, 0, 0, 0, 0for i in doc.get_pages():#循环遍历列表,每次处理一个page的内容num_page += 1 interpreter.process_page(i)layout = device.get_result()print(layout)for x in layout:if isinstance(x,LTImage):num_image += 1if isinstance(x,LTCurve): num_curve += 1if isinstance(x,LTFigure):  # figure对象num_figure += 1if isinstance(x, LTTextBoxHorizontal):#判断变量时水平文本框对象num_TextBoxHorizontal += 1# 水平文本框对象增一# 保存文本内容if hasattr(x,"get_text"):#判断x对象是否有get_text方法with open(r'{}'.format(path), 'a',encoding='utf-8') as f:    #生成doc文件的文件名及路径results = x.get_text()print(results)f.write(results)f.write('\n')# 获取文本内容print('对象数量:\n','页面数:%s\n'%num_page,'图片数:%s\n'%num_image,'曲线数:%s\n'%num_curve,'水平文本框:%s\n'%num_TextBoxHorizontal)print ('处理完成')def main2():walk=os.walk(r"C:\Users\ALFIEL\Desktop\pdfdocement")for root, dirs,files in walk:for name in files:if len(re.findall('(\w)\.pdf',name))>=1:#添加条件对pdf文件进行筛选pdfFile = os.open(r"{}".format(os.path.join(root,name)),os.O_RDWR)save_to_doxc(pdfFile,path=os.path.join(root,name).replace('.pdf','.doc'))if __name__ == '__main__':main2()

注意:当写入txt,csv文件时,需要吧编码模式encoding为utf-8

doc转pdf或其他

还有通过调用win32接口进行doc的转换

from win32com.client import Dispatch, constantsdef doc2pdf(input1, output):w = Dispatch('Word.Application')try:doc = w.Documents.Open(input1, ReadOnly=1)doc.SaveAs(output, 17)return Trueexcept Exception as e:print(e)return Falsefinally:doc.Close()
def main():input1 = r'C:\Users\ALFIEL\Desktop\pdfdocement\1.doc'output = r'C:\Users\ALFIEL\Desktop\pdfdocement\6.pdf'rc = doc2html(input1, output)if rc:print('转换成功')else:print('转换失败')if __name__ == '__main__':main()

其中SaveAs(output,wdformat)

wdfomat参数如下:

wdFormatDocument                    =  0
wdFormatDocument97                  =  0
wdFormatDocumentDefault             = 16
wdFormatDOSText                     =  4
wdFormatDOSTextLineBreaks           =  5
wdFormatEncodedText                 =  7
wdFormatFilteredHTML                = 10
wdFormatFlatXML                     = 19
wdFormatFlatXMLMacroEnabled         = 20
wdFormatFlatXMLTemplate             = 21
wdFormatFlatXMLTemplateMacroEnabled = 22
wdFormatHTML                        =  8
wdFormatPDF                         = 17
wdFormatRTF                         =  6
wdFormatTemplate                    =  1
wdFormatTemplate97                  =  1
wdFormatText                        =  2
wdFormatTextLineBreaks              =  3
wdFormatUnicodeText                 =  7
wdFormatWebArchive                  =  9
wdFormatXML                         = 11
wdFormatXMLDocument                 = 12
wdFormatXMLDocumentMacroEnabled     = 13
wdFormatXMLTemplate                 = 14
wdFormatXMLTemplateMacroEnabled     = 15
wdFormatXPS                         = 18照着字面意思应该能对应到相应的文件格式,如果你是office 2003可能支持不了这么多格式。word文件转html有两种格式可选wdFormatHTML、wdFormatFilteredHTML(对应数字8、10),区别是如果是wdFormatHTML格式的话,word文件里面的公式等ole对象将会存储成wmf格式,而选用wdFormatFilteredHTML的话公式图片将存储为gif格式,而且目测可以看出用wdFormatFilteredHTML生成的HTML明显比wdFormatHTML要干净许多。

参考自https://blog.csdn.net/binger819623/article/details/6770932

python pdf 转换成txt,csv,doc 及doc转换为pdf初级相关推荐

  1. 如何把扫描pdf转换成txt

    如何把扫描pdf转换成txt 什么是PDF文件格式,选择哪一款PDF转换成TXT转换器能够提高工作效率?PDF怎么转换为TXT?今天菜鸟这堂课就来为大家详细讲解. 一.什么是PDF文件格式? 首先我们 ...

  2. pdf转换成txt转换器的最快方法

    微友圈里很多朋友都问过PDF转换为TXT文件的问题,在此小编特的整理了一个极品的PDF转TXT的软件,大家觉得好用不妨尝试看看. 迅捷PDF转换成TXT转换器(最新V5.0版本) pdf转换成txt转 ...

  3. 怎样快速将pdf转换成txt格式

    还在为PDF怎样转换成TXT文字而发愁吗?工作中每次遇到这个问题我总是绞尽了脑汁也找不到便捷的方法解答它,怎么办?最近在百度文库中查找资料时发现有一篇名为<PDF如何转换成TXT>让我找到 ...

  4. python pdf转txt保留全部信息_Python 将pdf转换成txt(不处理图片)

    上一篇文章中已经介绍了简单的python爬网页下载文档,但下载后的文档多为doc或pdf,对于数据处理仍然有很多限制,所以将doc/pdf转换成txt显得尤为重要.查找了很多资料,在linux下要将d ...

  5. python pdf处理 图片_Python 将pdf转换成txt(不处理图片)

    上一篇文章中已经介绍了简单的python爬网页下载文档,但下载后的文档多为doc或pdf,对于数据处理仍然有很多限制,所以将doc/pdf转换成txt显得尤为重要.查找了很多资料,在linux下要将d ...

  6. pdf转换成txt转换器在线转换

    PDF.TXT.Word.Excel和Word格式文件是我们我们日常办公中使用频率最高的,有时我们需要将PDF转换成为更加便捷打印编辑的TXT和Word文档,而面对这两种不同格式的转换,很多用户都试图 ...

  7. pdf转换成txt转换器怎么用

    pdf转换成txt转换器怎么用 什么样的PDF转换成TXT转换器比较好?根据最新的PDF转换工具排行榜数据统计显示,目前国内下载和使用量最多的PDF转换工具中,迅捷PDF转换成TXT转换器使用和支持者 ...

  8. pdf转换成txt转换器1.2详细教程

    pdf转换成txt转换器1.2详细教程 我们知道评价一款PDF转换成TXT转换器的转换效果好坏,归根到底还是跟软件本身的PDF文件识别技术有关.传统的PDF转换TXT转换器软件识别率相对较低,严重地影 ...

  9. pdf转换成txt转换器的操作方法

    信息化的快速发展也推进了办公软件的功能更新,不学习就会被淘汰,PDF格式目前受到越来越多企业的喜爱掌,所以掌握微软办公软件的使用和操作知识是当前很多新手必须掌握的一门技能,其中把多个PDF电子文档转换 ...

  10. 如何把图片pdf转换成txt

    如何把图片pdf转换成txt 前段时间看到有午饭们在提问有没有PDF转成txt的软件,几经波折,现在找到了一款非常好的PDF转换成TXT转换器,就逼不及待地和大家分享出来了,需要的午饭们请及时下载喔  ...

最新文章

  1. python绘制动点_Python asyncore / asynchat 基本传输实验 - Jacky Liu's Blog
  2. Nginx负载均衡和反向代理
  3. IDEA中的项目没有被SVN管理解决办法
  4. 前端学习(2462):打包优化
  5. 实体零售全渠道及数字化发展报告(2020)
  6. Android 8.0 学习(12)---init.rc语法及解析过程总结
  7. 聊聊技术人的中年危机
  8. C语言基础—进制转换
  9. MATLAB公式希腊字母表
  10. 小学认识计算机说课ppt,“认识计算机”说课稿.ppt
  11. RK3399平台开发系列讲解(内核驱动外设篇)6.8、视频解码芯片GM7150驱动的添加
  12. 【程序逻辑】数据时代的推断陷阱尔雅答案
  13. LeetCode1-580题汇总
  14. LM2596 负载增大,电压降低的问题
  15. php pdf转txt文件,PDF文件在线转换TXT
  16. SAP软件系统合规性审计介绍
  17. 一次项目开发中,收获的经验和教训
  18. 安装.Net应用程序(如B站弹幕姬)报错:参照的程序集没有安装在系统上。 (异常来自 HRESULT:0x800736B3)
  19. 【算法导论】动态规划之“钢管切割”问题
  20. Electron常见问题 3-Error: sha512 checksum mismatch, expected

热门文章

  1. 那些不起眼的流量大户在做什么?(转载)
  2. 微观:心流,宏观:ikigai
  3. E18-D80NK拆解
  4. 错误隐藏学习手记(六)
  5. java随机星星怎么闪_实现星星闪动的java代码
  6. Web 前端基础知识面试大全
  7. IE8中文件下载不兼容问题
  8. 巯基吡啶PEG巯基吡啶,OPSS-PEG-OPSS
  9. http缓存和浏览器缓存
  10. android 高仿美团,Android 仿美团、大众点评团购详情UI