pdf及word文档的读取 pyPDF2,docx
#!python3
#-*- coding:utf8 -*-
#PyPDF2可能会打不开某些pdf文档,也不能提取图片,图表或者其他媒介从PDF文件中。但是它能提取文本从PDF中,转化为字符。
import PyPDF2
#以二进制方式 读模式打开一个pdf文件
pdfFileObj=open('e:\work\data_service.pdf','rb')
#读取pdf文档
pdfReader=PyPDF2.PdfFileReader(pdfFileObj)
#返回的是pdf文档的总页数
print(pdfReader.numPages)
#获取单页的内容,页码数从0开始
pageObj=pdfReader.getPage(0)
#返回单页的文本内容
pageObj.extractText()
#对于有加密的pdf文档其读对象有属性 isEncrypted
print(pdfReader.isEncrypted) #若有加密,则属性值为True。直接获取某页的文本内容会报错。
#通过方法decrypt()传递解密密码后可正常获取文本内容,密码以字符串形式传入。
#pdfReader.decrypt('rosebud')
#写pdf文档
#创建pdf写对象
pdfWriter=PyPDF2.PdfFileWriter()
for pageNum in range(pdfReader.numPages):
pageObj=pdfReader.getPage(pageNum)
#向pdf写对象里添加内容(内容为pdf某个页面对象)
pdfWriter.addPage(pageObj)
#pdfWriter.addPage(pdfReader.getPage(3))
#创建新的pdf文件
pdfOutputFile=open('combinedminutes.pdf','wb')
#将pdf写对象中的内容加进新建的pdf文件中
#pdfWriter.write(pdfOutputFile) 此语句写入失败
#写完后关闭pdf文件
pdfOutputFile.close()
#word文档读写
import docx
doc=docx.Document('C:\\Users\\li.wu\\Desktop\\有趣的植物.docx')
#文档的总段落数
print(len(doc.paragraphs))
#可以一段一段的返回文本内容
print(doc.paragraphs[0].text)
#'第一章\xa0\xa0了解MySQL'
#每个段落都有一个runs属性,runs的长度表示这个段落的格式的变化次数。
len(doc.paragraphs[1].runs)
#10
#每个runs元素也都有一个text属性
print(doc.paragraphs[1].runs[0].text)
#'\xa0\xa0\xa0'
#如果只关心文档中的内容,不在意格式的话,可以写一个函数直接获取整段文本:
def getText(filename):
doc=docx.Document(filename)
fullText=[]
for para in doc.paragraphs:
fullText.append(para.text)
return '\n'.join(fullText)
a=getText('e:\work\mysqll.docx')
print(a.encode('utf-8'))
'''
默认的字体的类型有:
'Normal' 'Heading5' 'ListBullet' 'ListParagraph' 'BodyText' 'Heading6' 'ListBullet2' 'MacroText' 'BodyText2' 'Heading7'
'ListBullet3' 'NoSpacing' 'BodyText3' 'Heading8' 'ListContinue' 'Quote' 'Caption' 'Heading9' 'ListContinue2' 'Subtitle'
'Heading1' 'IntenseQuote' 'ListContinue3' 'TOCHeading' 'Heading2' 'List' 'ListNumber' 'Title' 'Heading3' 'List2'
'ListNumber2' 'Heading4' 'List3' 'ListNumber3'
'''
#有3种类型的风格,段落风格可以应用于Paragraph对象,个性风格可以应用于Run对象。关联风格可以应用于前两种风格。
#设置风格属性时,风格类型名中间不要使用空格,例Subtle Emphasis ,入参应写成'SubtleEmphasis'
#Paragraph和Run对象都有属相style,通过设置style的值可以设置段落和文字的格式。
#当使用关联风格属性应用于Run对象时,需要在风格名后加上’Char'。例如要将Quote类的关联风格应用于Paragraph对象时,使用paragraphObj.style='Quote',
#但是应用于Run对象时,应该使用runObj.style='QuoteChar'.
#目前的Python-Docx(0.7.4)只支持默认的word风格。
#run对象的text属性,每个text属相有三种值 True(打开) False(关闭) None(默认值)
#run对象的text属性:
'''
bold : The text appears in bold.
italic : The text appears in italic.
underline : The text is underlined.
strike : The text appears with strikethrough.
double_strike : The text appears with double strikethrough.
all_caps : The text appears in capital letters.
small_caps : The text appears in capital letters, with lowercase letters two points smaller.
shadow : The text appears with a shadow.
outline : The text appears outlined rather than solid.
rtl : The text is written right-to-left.
imprint : The text appears pressed into the page.
emboss : The text appears raised off the page in relief.
'''
doc.paragraphs[1].runs[0].underline=True
doc.save('restyled.docx')
#创建新的word文档
doc=docx.Document()
#添加段落
doc.add_paragraph('Hello world!')
a=doc.add_paragraph('this is a second paragraph')
#在段落后添加语句
a.add_run('This text is being addded to the second paragraph')
#添加段落时可设置段落格式
doc.add_paragraph('Hello world !','Title')
#add_heading()方法是以某一种标题格式添加一个段落数据范围从0~4,0是主标题,4是第4级副标题。
doc.add_heading('Header 0',0) #格式为标题1
doc.add_heading('Header 1',1) #格式为标题2
#通过在第一个末尾设置一个break,转到下一页
doc.paragraphs[2].runs[0].add_break(docx.enum.text.WD_BREAK.PAGE)
#Enumeration – WD_BREAK_TYPE
'''
WD_BREAK.LINE
WD_BREAK.LINE_CLEAR_LEFT
WD_BREAK.LINE_CLEAR_RIGHT
WD_BREAK.TEXT_WRAPPING (e.g. LINE_CLEAR_ALL)
WD_BREAK.PAGE
WD_BREAK.COLUMN
WD_BREAK.SECTION_NEXT_PAGE
WD_BREAK.SECTION_CONTINUOUS
WD_BREAK.SECTION_EVEN_PAGE
WD_BREAK.SECTION_ODD_PAGE
'''
doc.add_paragraph('This is on the second page!')
#添加图片到文档末尾(宽设置为4英寸,高设置为1厘米)高与宽可以不设置,则为常规大小。
doc.add_picture('e:\work\code.jpg',width=docx.shared.Inches(4),height=docx.shared.Cm(1))
doc.save('e:\work\helloworld.docx')
pdf及word文档的读取 pyPDF2,docx的更多相关文章
- Python处理PDF和Word文档常用的方法
Python处理PDF和Word文档的模块是PyPDF2,使用之前需要先导入. 打开一个PDF文档的操作顺序是:用open()函数打开文件并用一个变量来接收,然后把变量给传递给PdfFileReade ...
- 判断pdf、word文档、图片等文件类型(格式)、大小的简便方法
判断pdf.word文档.图片等文件类型(格式).大小的简便方法 很久没发文了,今天有时间就写一下吧. 关于上传文件,通常我们都需要对其进行判断,限制上传的类型,如果是上传图片,我们甚至会把图片转化成 ...
- Python处理PDF和Word文档常用的方法(二)
Python处理word时,需要安装和导入python-docx模块. 安装命令:pip install python-docx 导入命令:import docx 编码编写顺序:用docx.Docum ...
- 关于WORD文档的读取乱码问题
一直以来都是用File类操作txt文档,今天想尝试能不能打开word文档,无奈,尝试了UTF8,Unicode,Default....等编码方式,打开文件都是乱码,电脑甚至发出警报声. 以下只取一种编 ...
- SpringBoot整合openoffice实现word文档的读取和导入及报错处理
先安装openoffice4 Linux系统安装参考:https://www.cnblogs.com/pxblog/p/11622969.html Windows系统安装参考:https://www. ...
- poi导出word文档,doc和docx
maven <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --><dependency> <gro ...
- PDF转word文档
本文未对扫描版的PDF实验,但是可编辑PDF版本可以转换为word而且转换后的word是可编辑的. 1.从http://xiazai.zol.com.cn/detail/33/326858.shtml ...
- word文档操作-doc转docx、合并多个docx
前言: 临时来了一条新的需求:多个doc文档进行合并. 在网上苦苦搜罗了很久才找到可用的文件(原文出处到不到了 所以暂时不能加链接地址了),现在记录下留给有需要的人. 一:doc转docx 所需jar ...
- word文档转pdf,支持.doc和.docx,另附抽取pdf指定页数的方法
公司有个需求,需要将word转成pdf并且抽取首页用以展示,word文档有需要兼容.doc和.docx两种文档格式.其中.docx通过poi直接就可以将word转成pdf,.doc则无法这样实现,上网 ...
随机推荐
- PHP数组排序函数有哪些
PHP数组排序函数有哪些 一.总结 一句话总结:其实也就是是否保持索引,对键排序还是对值排序,除了sort,rsort.shuffle,usort外,都是保持索引的 是否保持索引 键排序 值排序 除了 ...
- legend2---开发日志1(legend的数据库整体设计思路是什么)
legend2---开发日志1(legend的数据库整体设计思路是什么) 一.总结 一句话总结:不同种类的物品分不同的表放,不放到一个物品表里,取所有物品时一个个表的取就好了 不同种类的物品分不同的表 ...
- C# 读取word2003 并且显示在界面上的方法
1.新建一个windows窗体程序 2. 引入包WinWordControl.dll 3.添加引用 4.引入组件WinWordControl组件 5.主界面上加入按钮 ,opendialog, win ...
- idea ----> 使用idea工具整合mybaiti时出现的问题总结
使用idea测试mabtis实例时出现 java.lang.IllegalArgumentException: Mapped Statements collection does not conta ...
- Agile敏捷开发Planning Poker简介
关注嘉为科技,获取运维新知 一.为什么不用“人天”? 传统的IT项目,尤其是软件开发项目,往往使用“人天”来作为工作量评估的量词.甚至是代表一种评估方式.在软件项目开发经典著作<人月神话&g ...
- [转]C#使用 Salt + Hash 来为密码加密
本文转自:http://www.csharpwin.com/csharpspace/13412r9615.shtml (一) 为什么要用哈希函数来加密密码 如果你需要保存密码(比如网站用户的密码),你 ...
- Confluence 6 创建一个空间
在 Confluence 中并不限制你可以创建多少空间.你可以选择为你每一个小组,项目都创建一个空间,或者你也可以将这 2 者混合在一起.所有的这些都基于你的需求来决定的. 每一个 Confluenc ...
- 重写TreeMap的compare方法处理配置表
需要处理的配置表如下: 接上一篇的优化,接着优化,优化代码如下: 这段代码的关键在于重写TreeMap的compare方法. 关于如何重写TreeMap的compare方法,以及返回值代表的意义,可 ...
- TCHAR用法
TCHAR 就是当你的字符设置为什么就是什么例如:程序编译为 ANSI, TCHAR 就是相当于 CHAR当程序编译为 UNICODE, TCHAR 就相当于 WCHAR char :单字节变量类型, ...
- oracle登陆触发器及精细审计
--oracle精细审计FGAselect tab2.userhost 引起操作的主机名,tab2.os_user 引起操作的主机用户,tab2.object_schema 被操作对象所属用户,tab ...