#!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')

转载于:https://www.cnblogs.com/Ting-light/p/9548127.html

pdf及word文档的读取 pyPDF2,docx相关推荐

  1. 爬虫系列:读取 CSV、PDF、Word 文档

    上一期我们讲解了使用 Python 读取文档编码的相关问题,本期我们讲解使用 Python 处理 CSV.PDF.Word 文档相关内容. CSV 我们进行网页采集的时候,你可能会遇到 CSV 文件, ...

  2. 《Python 编程快速上手 — 让繁琐工作自动化》读书笔记之【第13章 处理PDF和Word文档(1)】

    PDF 和 Word 文档是二进制文件. 1.  PDF 文档 PDF表示Portable Document Format(可移植文档格式),使用.pdf文件扩展名.用于处理PDF的模块是PyPDF2 ...

  3. 最全的PDF转换Word文档方法汇总(珍藏版)

    相信很多人经常使用到Word文档和PDF文档,也有PDF转换Word的需求,不过转换PDF文档也是难倒了很多人了. 今天小编就总结了有关于PDF转Word文档的所有方法,希望对需要的朋友有一定的帮助. ...

  4. PDF转word文档(java)

    PDF转word文档的具体步骤 第一:导入正确的对应的jar包 第二,定义一个字符串是存储PDF文件的路径,代码如下: String pdfFile = "D:/BaiduNetdiskDo ...

  5. PDF转Word文档怎么转?两招教你学会PDF转word

    最近小编发现周围的同事每天都被PDF转Word文档这个问题导致加班到很晚,原来老板前些天给了很多PDF格式的文件,还要求把这些PDF文件转成word文档的格式,他们不知道怎么转,竟然一个个对着PDF文 ...

  6. Python-docx 读写 Word 文档:读取正文、表格文本信息、段落格式、字体格式等

    Python-docx 模块读写 Word 文档基础(三):读取文档文本信息.表格信息.段落格式.字体格式等 前言: 1.获取文档章节信息: 2.获取段落文字信息: 3.获取文字格式信息: 4.获取文 ...

  7. 办公知识:有关如何PDF转Word文档的方法分享

    现在我们从网上下载的资料文献大部分都是PDF格式,由于PDF格式无法自由编辑的性质,想要获取文档中的内容只能一字一句复制粘贴过去,这样做不仅耽误工作进度还耗费精力. 这时候其实可以将PDF转换为可编辑 ...

  8. php打开word文档_PHP读取word文档的方法分享

    本文主要介绍PHP读取word文档的方法,较为详细的分析了COM组件的开启.属性设置及基于COM组件打开并读取word文档的操作技巧,需要的朋友可以参考下,希望能帮助到大家. php开发 过程中可能会 ...

  9. 在线PDF转Word文档-PDFtoWord

    在线PDF转Word文档-PDFtoWord [ 2010/01/24 01:02 | by ] 大 | 中 | 小 之前一篇文章介绍了PDF转DOC格式工具后,我在为大家介绍一款在线PDF转DOC格 ...

  10. 如何pdf转word文档?这几个小技巧你值得拥有

    关于怎么把pdf转word的方法,这里分享给你 想知道怎么把pdf转word?安利两个好用的pdf转word软件 怎么把pdf转word?这几个pdf转word工具帮你解决难题 实用转换小技巧:pdf ...

最新文章

  1. Android实现模块 api 化
  2. python 框架和 spring mvc_Django和Spring MVC,该选择哪个框架进行Web开发学习?
  3. sdut 1730 数字三角形问题
  4. 检测Maven依赖中介
  5. (转)ZwQuerySystemInformation枚举内核模块及简单应用
  6. select、poll、epoll 比较
  7. win10无限重启_win10系统安装无限循环如何解决_win10教程
  8. BZOJ 1283 费用流
  9. tensor索引[..., 0]
  10. u盘维护系统 linux,制作绝对pe+puppy U盘维护系统双系统(以下方法也可制作archlinux U盘安装)...
  11. LEACH算法仿真实验
  12. K3WISE老单序时簿开发示例:增加功能性按钮
  13. 谢孟媛初级文法28 课地方副词时间副词和程度副词
  14. android 计时器服务,启动时使用计时器/alarmclock,更新服务_android_开发99编程知识库...
  15. CC2530+ESP8266使用MQTT协议上传阿里云的问题
  16. jy-12-SPRINGMYBATIS02——云笔记04-刘苍松
  17. 《麦肯锡方法》第5章 组建团队-思维导图
  18. 吉米_王:MySQL开启log_bin日志,误删数据库时你最后的救命稻草
  19. 一名奔三的程序猿的困惑
  20. 【CS231n assignment 2022】Assignment 3 - Part 3,Transformer

热门文章

  1. mac系统通过ADB与scrcpy实现手机投屏
  2. LeetCode 3:Longest Substring Without Repeating Charact
  3. 模块化认知:演化如何自下而上涌现出智能?
  4. contest12 CF514div2 ooxxx oooox ooooo
  5. 高中数学一轮复习逆袭必要学习方法
  6. 天地伟业tiandy如何连手机_西游释厄传手机版下载(附出招表)-西游释厄传手机版金手指下载v2020.10.24.14...
  7. linux下系统中的文件传输
  8. android ipad 播放器,iPad 2高清视频播放器(AVPlayerHD)
  9. POJ1436Horizontally Visible Segments线段树+lazy
  10. 如何用GIS做城市购房选址分析