python与pdf与word(datawhale组队学习task3)
目录
pdf信息的读取:
pdf的添加和保存
pdf加密与解密(encrypt(password)):
word
基础操作:
插入图片:
添加表格:
模块:PyPDF2 和 pdfplumber
pdf信息的读取:
PyPDF2.PdfReader(filepath)读取pdf的信息
import PyPDF2 as p2
pdf1 = p2.PdfReader('易方达中小盘混合型证券投资基金2020年中期报告.pdf')
print(pdf1.getNumPages())
#获取pdf页码数量
读取页面中的文字:
pdf2 = pdfplumber.open('易方达中小盘混合型证券投资基金2020年中期报告.pdf')
for page in pdf2.pages:print(page.extract_text())
#读取所有内容
pdf2 = pdfplumber.open('易方达中小盘混合型证券投资基金2020年中期报告.pdf')
print(pdf2.pages[0].extract_text())
#利用索引打印第一页内容
获取页面中的表格:
print(pdf2.pages[6].extract_table())
#hu获取pdf中的表格(第7页)
pdf的添加和保存
pdf = PdfFileWriter()
pdf.addpage()
'''添加页面'''
with with open(save_filepath, "wb") as out:pdf.write(out)
'''保存pdf'''
pdf加水印(需要有一个含有水印的空白图片):
watermark = PdfFileReader(watermark_filepath)#空白水印的文件
watermark_page = watermark.getPage(0)
pdf_reader = PdfFileReader(filepath)#要添加水印的pdf
pdf_writer = PdfFileWriter()
for page_index in range(pdf_reader.getNumPages()):current_page = pdf_reader.getPage(page_index)# 封面页不添加水印if page_index == 0:new_page = current_pageelse:new_page = copy(watermark_page)new_page.mergePage(current_page)pdf_writer.addPage(new_page)# 保存水印后的文件with open(save_filepath, "wb") as out:pdf_writer.write(out)
pdf加密与解密(encrypt(password)):
pdf3 = p2.PdfWriter()
for page in range(pdf1.getNumPages()):pdf3.addPage(pdf1.getPage(page))
pdf3.encrypt('12345')
#设置加密密码
with open('../python&pdf&word/加密文件.pdf', "wb") as out:pdf3.write(out)
加密后效果:
解密:
pdf3 = p2.PdfReader('加密文件.pdf')
pdf3.decrypt('12345')
pdfdecrypted = p2.PdfWriter()
for index in range(pdf3.getNumPages()):pdfdecrypted.addPage(pdf3.getPage(index))out2 = open('解密后文件.pdf','wb')
pdfdecrypted.write(out2)
word
模块:python-docx
基础操作:
doc_1 = docx.Document()可新建文档 add_heading('')添加标题 add_run('')添加文字 add_paragraph()添加段落
import docx
doc_1 = docx.Document()
'''新建doc'''
'''添加标题(0相当于文章的题目,默认级别是1,级别范围为0-9)'''
doc_1.add_heading('新建空白文档标题,级别为1',level = 1)
doc_1.add_heading('新建空白文档标题,级别为2',level = 2)para1 = doc_1.add_paragraph('第一个段落')
'''添加段落'''para1.add_run('加粗字体').bold = True
para1.add_run('普通字体')
'''增加文字同时可以添加样式'''para2 = para1.insert_paragraph_before('在第一段文字前插入的段落')
'''在原有段落前插入段落'''doc_1.add_page_break()
'''分页'''para3 = doc_1.add_paragraph('第二页的段落')
'''新一页的段落'''heading1 = doc_1.add_heading('jay chou')
heading1.alignment = docx.enum.text.WD_PARAGRAPH_ALIGNMENT.CENTER
'''添加标题并设置居中
WD_ALIGN_PARAGRAPH. LEFT:左对齐;
#WD_ALIGN_PARAGRAPH. CENTER:居中对其;
#WD_ALIGN_PARAGRAPH. RIGHT:右对齐;
#WD_ALIGN_PARAGRAPH. JUSTIFY:两端对齐;
'''para3.paragraph_format.first_line_indent =docx.share.Cm(0.75)
para3.paragraph_format.line_spacing = 1.5
'''
设置样式:缩进0。75cm
行距1。5北
'''text = '中国台湾华语流行歌手、' \'音乐创作家、作曲家、作词人、' \'制作人、杰威尔音乐公司老板之一、导演。' \'近年涉足电影行业。周杰伦是2000年后亚洲流行乐坛最具革命性与指标' \'性的创作歌手,有“亚洲流行天王”之称。他突破原有亚洲音乐的主题、形' \'式,融合多元的音乐素材,创造出多变的歌曲风格,尤以融合中西式曲风的嘻哈' \'或节奏蓝调最为著名,可说是开创华语流行音乐“中国风”的先声。周杰伦的' \'出现打破了亚洲流行乐坛长年停滞不前的局面,为亚洲流行乐坛翻开了新的一页!'
r1 = para3.add_run(text)
#段落增加文字
r1.font.size =docx.share.Pt(10) #字号
r1.font.bold = True #加粗
r1.font.color.rgb =docx.share.RGBColor(255,0,0) #颜色
'''添加样式'''doc_1.save('doc_1.docx')
'''保存文件'''
插入图片:
doc_1.add_picture('周杰伦.jpg',width=Inches(1.0), height=Inches(1.0))inches需要从docx.shared导入
添加表格:
table1 = doc_1.add_table(rows=2, cols=1)
row_cells = table1.add_row().cells
#增加一行
实例(批量生成邀请函)
from openpyxl import load_workbook
from docx import Document
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.shared import RGBColor, Pt,Inches,Cm
from docx.oxml.ns import qnpath = r'D:\idea\cloud_analyse_game_sentiment\word自动化'
# 路径为Excel 文件所在的位置,可按实际情况更改workbook = load_workbook(path + r'\excel到word.xlsx')
sheet = workbook.active #默认的WorkSheetn = 0 #为了不遍历标题(excel的第一行)
for row in sheet.rows:if n:company = row[0].valueoffice = row[1].valuename = row[2].valuedate = str(row[3].value).split()[0]print(company, office, name, date)doc = Document()heading_1 = '邀 请 函'paragraph_1 = doc.add_heading(heading_1, level=1)# 居中对齐paragraph_1.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER# 单独修改较大字号for run in paragraph_1.runs:run.font.size = Pt(17)greeting_word_1 = '尊敬的'greeting_word_2 = '公司'greeting_word_3 = ',您好:'paragraph_2 = doc.add_paragraph()paragraph_2.add_run(greeting_word_1)r_1 = paragraph_2.add_run(company)r_1.font.bold = True # 加粗r_1.font.underline = True #下划线paragraph_2.add_run(greeting_word_2)r_2 = paragraph_2.add_run(office)r_2.font.bold = True # 加粗r_2.font.underline = True #下划线r_3 = paragraph_2.add_run(name)r_3.font.bold = True # 加粗r_3.font.underline = True #下划线paragraph_2.add_run(greeting_word_3)paragraph_3 = doc.add_paragraph()paragraph_3.add_run('现诚挚的邀请您于2021年10月27日参加DataWhale主办的享受开源2050活动,地点在北京鸟巢,希望您届时莅临参加。')paragraph_3.paragraph_format.first_line_indent = Cm(0.75)paragraph_3.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.LEFTparagraph_3.paragraph_format.space_after = Inches(1.0)paragraph_3.paragraph_format.line_spacing = 1.5paragraph_4 = doc.add_paragraph()date_word_1 = '邀请时间:'paragraph_4.add_run(date_word_1)paragraph_4.alignment = WD_PARAGRAPH_ALIGNMENT.RIGHTsign_date = "{}年{}月{}日".format(date.split('-')[0], date.split('-')[1], date.split('-')[2])paragraph_4.add_run(sign_date).underline = Trueparagraph_4.alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT#设置全文字体for paragraph in doc.paragraphs:for run in paragraph.runs:run.font.color.rgb = RGBColor(0, 0, 0)run.font.name = '楷体'r = run._element.rPr.rFontsr.set(qn('w:eastAsia'), '楷体')doc.save(path + "\{}-邀请函.docx".format(name))n = n + 1
完
python与pdf与word(datawhale组队学习task3)相关推荐
- Datawhale组队学习周报(第040周)
本周报总结了从 11月15日至11月21日,Datawhale组队学习的运行情况,我们一直秉承"与学习者一起成长的理念",希望这个活动能够让更多的学习者受益. 第 31 期组队学习 ...
- DataWhale 大数据处理技术组队学习task3
四.分布式数据库HBase 1. 产生背景 1.1 Hadoop的局限性 优点:存储结构化.半结构甚至非结构化的数据,是传统数据库的补充,是海量数据存储的最佳方法. 缺陷: 只能进行批处理,并且只能以 ...
- Datawhale组队学习周报(第047周)
本周报总结了从 2021年01月03日至2022年01月09日,Datawhale组队学习的运行情况,我们一直秉承"与学习者一起成长的理念",希望这个活动能够让更多的学习者受益. ...
- Datawhale组队学习周报(第041周)
本周报总结了从 11月22日至11月28日,Datawhale组队学习的运行情况,我们一直秉承"与学习者一起成长的理念",希望这个活动能够让更多的学习者受益. 第 31 期组队学习 ...
- Datawhale组队学习周报(第038周)
本周报总结了从 11月01日至11月07日,Datawhale组队学习的运行情况,我们一直秉承"与学习者一起成长的理念",希望这个活动能够让更多的学习者受益. 第 30 期组队学习 ...
- Datawhale组队学习周报(第035周)
希望开设的开源内容 目前Datawhale的开源内容分为两种:第一种是已经囊括在我们的学习路线图内的Datawhale精品课,第二种是暂未囊括在我们的学习路线图内的Datawhale打磨课.我们根据您 ...
- Datawhale组队学习周报(第032周)
希望开设的开源内容 目前Datawhale的开源内容分为两种:第一种是已经囊括在我们的学习路线图内的Datawhale精品课,第二种是暂未囊括在我们的学习路线图内的Datawhale打磨课.我们根据您 ...
- Datawhale组队学习周报(第021周)
本文总结了本周(07月05日~07月11日)Datawhale组队学习的运行情况,我们一直秉承"与学习者一起成长的理念",希望这个活动能够让更多的学习者受益. 第 25 期组队学习 ...
- Datawhale组队学习周报(第019周)
本周(06月21日~06月27日),第 25 期组队学习一共有 3 门开源课程,共组建了 3 个学习群,参与的学习者有 292 人,其中 web开发入门教程.数据挖掘实战(异常检测) 已经结营,另外一 ...
最新文章
- 一个简单json数据提交实例
- 个人代码库のC#千千静听 - 桌面歌词 (功能模拟)
- mysql基础(全,必看)
- hdu 5131 (2014广州现场赛 E题)
- SQL中的撤销索引、表以及数据库
- 【Unity】Planar Shadows平面阴影的实现
- 【机器视觉】 executable_expression算子
- 判断sem信号量为零_kernel.sem信号量调优
- python airflow_airflow 简明指南
- 如何借助SimpleAdapter和Spinner实现下拉列表
- 吴裕雄--天生自然C语言开发:作用域规则
- 工作一年了,小贺和大家说说心里话
- 001-unity2D游戏随机生成地图
- 【肌电信号】脉搏信号分析(去噪+特征提取)matlab源码含GUI
- Windows驱动_WSK驱动之三WSK编程注意事项
- 强烈推荐 DELPHI 程序员用 KOL+MCK
- photoshop2019教程基础
- 人工智能期末——第二章知识的表示
- 一文带你了解Web前端发展历程
- 用python画太阳花原理_Python——教你画朵太阳花