当前位置:   article > 正文

python与pdf与word(datawhale组队学习task3)_python page.extract_text()无数据

python page.extract_text()无数据

目录

pdf

pdf信息的读取:

pdf的添加和保存

pdf加密与解密(encrypt(password)):

word

基础操作:

插入图片:

添加表格:


pdf

模块:PyPDF2 和 pdfplumber

pdf信息的读取:

PyPDF2.PdfReader(filepath)读取pdf的信息
  1. import PyPDF2 as p2
  2. pdf1 = p2.PdfReader('易方达中小盘混合型证券投资基金2020年中期报告.pdf')
  3. print(pdf1.getNumPages())
  4. #获取pdf页码数量

读取页面中的文字:

  1. pdf2 = pdfplumber.open('易方达中小盘混合型证券投资基金2020年中期报告.pdf')
  2. for page in pdf2.pages:
  3. print(page.extract_text())
  4. #读取所有内容
  1. pdf2 = pdfplumber.open('易方达中小盘混合型证券投资基金2020年中期报告.pdf')
  2. print(pdf2.pages[0].extract_text())
  3. #利用索引打印第一页内容

获取页面中的表格:

  1. print(pdf2.pages[6].extract_table())
  2. #hu获取pdf中的表格(第7页)

pdf的添加和保存

  1. pdf = PdfFileWriter()
  2. pdf.addpage()
  3. '''添加页面'''
  4. with with open(save_filepath, "wb") as out:
  5. pdf.write(out)
  6. '''保存pdf'''

pdf加水印(需要有一个含有水印的空白图片):

  1. watermark = PdfFileReader(watermark_filepath)#空白水印的文件
  2. watermark_page = watermark.getPage(0)
  3. pdf_reader = PdfFileReader(filepath)#要添加水印的pdf
  4. pdf_writer = PdfFileWriter()
  5. for page_index in range(pdf_reader.getNumPages()):
  6. current_page = pdf_reader.getPage(page_index)
  7. # 封面页不添加水印
  8. if page_index == 0:
  9. new_page = current_page
  10. else:
  11. new_page = copy(watermark_page)
  12. new_page.mergePage(current_page)
  13. pdf_writer.addPage(new_page)
  14. # 保存水印后的文件
  15. with open(save_filepath, "wb") as out:
  16. pdf_writer.write(out)

pdf加密与解密(encrypt(password)):

  1. pdf3 = p2.PdfWriter()
  2. for page in range(pdf1.getNumPages()):
  3. pdf3.addPage(pdf1.getPage(page))
  4. pdf3.encrypt('12345')
  5. #设置加密密码
  6. with open('../python&pdf&word/加密文件.pdf', "wb") as out:
  7. pdf3.write(out)

加密后效果:

解密:

 

  1. pdf3 = p2.PdfReader('加密文件.pdf')
  2. pdf3.decrypt('12345')
  3. pdfdecrypted = p2.PdfWriter()
  4. for index in range(pdf3.getNumPages()):
  5. pdfdecrypted.addPage(pdf3.getPage(index))
  6. out2 = open('解密后文件.pdf','wb')
  7. pdfdecrypted.write(out2)

word

模块:python-docx

基础操作:

doc_1 = docx.Document()可新建文档
add_heading('')添加标题
add_run('')添加文字
add_paragraph()添加段落
  1. import docx
  2. doc_1 = docx.Document()
  3. '''新建doc'''
  4. '''添加标题(0相当于文章的题目,默认级别是1,级别范围为0-9)'''
  5. doc_1.add_heading('新建空白文档标题,级别为1',level = 1)
  6. doc_1.add_heading('新建空白文档标题,级别为2',level = 2)
  7. para1 = doc_1.add_paragraph('第一个段落')
  8. '''添加段落'''
  9. para1.add_run('加粗字体').bold = True
  10. para1.add_run('普通字体')
  11. '''增加文字同时可以添加样式'''
  12. para2 = para1.insert_paragraph_before('在第一段文字前插入的段落')
  13. '''在原有段落前插入段落'''
  14. doc_1.add_page_break()
  15. '''分页'''
  16. para3 = doc_1.add_paragraph('第二页的段落')
  17. '''新一页的段落'''
  18. heading1 = doc_1.add_heading('jay chou')
  19. heading1.alignment = docx.enum.text.WD_PARAGRAPH_ALIGNMENT.CENTER
  20. '''添加标题并设置居中
  21. WD_ALIGN_PARAGRAPH. LEFT:左对齐;
  22. #WD_ALIGN_PARAGRAPH. CENTER:居中对其;
  23. #WD_ALIGN_PARAGRAPH. RIGHT:右对齐;
  24. #WD_ALIGN_PARAGRAPH. JUSTIFY:两端对齐;
  25. '''
  26. para3.paragraph_format.first_line_indent =docx.share.Cm(0.75)
  27. para3.paragraph_format.line_spacing = 1.5
  28. '''
  29. 设置样式:缩进0。75cm
  30. 行距1。5北
  31. '''
  32. text = '中国台湾华语流行歌手、' \
  33. '音乐创作家、作曲家、作词人、' \
  34. '制作人、杰威尔音乐公司老板之一、导演。' \
  35. '近年涉足电影行业。周杰伦是2000年后亚洲流行乐坛最具革命性与指标' \
  36. '性的创作歌手,有“亚洲流行天王”之称。他突破原有亚洲音乐的主题、形' \
  37. '式,融合多元的音乐素材,创造出多变的歌曲风格,尤以融合中西式曲风的嘻哈' \
  38. '或节奏蓝调最为著名,可说是开创华语流行音乐“中国风”的先声。周杰伦的' \
  39. '出现打破了亚洲流行乐坛长年停滞不前的局面,为亚洲流行乐坛翻开了新的一页!'
  40. r1 = para3.add_run(text)
  41. #段落增加文字
  42. r1.font.size =docx.share.Pt(10) #字号
  43. r1.font.bold = True #加粗
  44. r1.font.color.rgb =docx.share.RGBColor(255,0,0) #颜色
  45. '''添加样式'''
  46. doc_1.save('doc_1.docx')
  47. '''保存文件'''

插入图片:

  1. doc_1.add_picture('周杰伦.jpg',width=Inches(1.0), height=Inches(1.0))
  2. inches需要从docx.shared导入

添加表格:

  1. table1 = doc_1.add_table(rows=2, cols=1)
  2. row_cells = table1.add_row().cells
  3. #增加一行

实例(批量生成邀请函)

  1. from openpyxl import load_workbook
  2. from docx import Document
  3. from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
  4. from docx.shared import RGBColor, Pt,Inches,Cm
  5. from docx.oxml.ns import qn
  6. path = r'D:\idea\cloud_analyse_game_sentiment\word自动化'
  7. # 路径为Excel 文件所在的位置,可按实际情况更改
  8. workbook = load_workbook(path + r'\excel到word.xlsx')
  9. sheet = workbook.active #默认的WorkSheet
  10. n = 0 #为了不遍历标题(excel的第一行)
  11. for row in sheet.rows:
  12. if n:
  13. company = row[0].value
  14. office = row[1].value
  15. name = row[2].value
  16. date = str(row[3].value).split()[0]
  17. print(company, office, name, date)
  18. doc = Document()
  19. heading_1 = '邀 请 函'
  20. paragraph_1 = doc.add_heading(heading_1, level=1)
  21. # 居中对齐
  22. paragraph_1.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
  23. # 单独修改较大字号
  24. for run in paragraph_1.runs:
  25. run.font.size = Pt(17)
  26. greeting_word_1 = '尊敬的'
  27. greeting_word_2 = '公司'
  28. greeting_word_3 = ',您好:'
  29. paragraph_2 = doc.add_paragraph()
  30. paragraph_2.add_run(greeting_word_1)
  31. r_1 = paragraph_2.add_run(company)
  32. r_1.font.bold = True # 加粗
  33. r_1.font.underline = True #下划线
  34. paragraph_2.add_run(greeting_word_2)
  35. r_2 = paragraph_2.add_run(office)
  36. r_2.font.bold = True # 加粗
  37. r_2.font.underline = True #下划线
  38. r_3 = paragraph_2.add_run(name)
  39. r_3.font.bold = True # 加粗
  40. r_3.font.underline = True #下划线
  41. paragraph_2.add_run(greeting_word_3)
  42. paragraph_3 = doc.add_paragraph()
  43. paragraph_3.add_run('现诚挚的邀请您于2021年10月27日参加DataWhale主办的享受开源2050活动,地点在北京鸟巢,希望您届时莅临参加。')
  44. paragraph_3.paragraph_format.first_line_indent = Cm(0.75)
  45. paragraph_3.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.LEFT
  46. paragraph_3.paragraph_format.space_after = Inches(1.0)
  47. paragraph_3.paragraph_format.line_spacing = 1.5
  48. paragraph_4 = doc.add_paragraph()
  49. date_word_1 = '邀请时间:'
  50. paragraph_4.add_run(date_word_1)
  51. paragraph_4.alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT
  52. sign_date = "{}年{}月{}日".format(date.split('-')[0], date.split('-')[1], date.split('-')[2])
  53. paragraph_4.add_run(sign_date).underline = True
  54. paragraph_4.alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT
  55. #设置全文字体
  56. for paragraph in doc.paragraphs:
  57. for run in paragraph.runs:
  58. run.font.color.rgb = RGBColor(0, 0, 0)
  59. run.font.name = '楷体'
  60. r = run._element.rPr.rFonts
  61. r.set(qn('w:eastAsia'), '楷体')
  62. doc.save(path + "\{}-邀请函.docx".format(name))
  63. n = n + 1

完 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/51428
推荐阅读
相关标签
  

闽ICP备14008679号