寫Word檔案
使用Python寫Word檔案需要安裝docx三方庫,如下示例寫了一個簡單的Word檔案
from docx import Document
from docx.shared import Cm, Pt
from docx.document import Document as Doc
# 創建一個word物件
document = Document() # type:Doc
# font = document.styles['Normal'].font
# font.size = Pt(22)
# 添加頂級標題
document.add_heading('快快樂樂學Python', 0)
# 添加段落
p = document.add_paragraph('Python是一門非常流行的編程語言,它')
run = p.add_run('簡單')
run.bold = True
# 設定字體大小
run.font.size = Pt(18)
run = p.add_run('而且')
# 設定字體
run.font.name = 'HYj1gf'
p.add_run('優雅,').italic = True
# 添加一級標題
document.add_heading('Heading, level 1', level=1)
document.add_paragraph('Intense quote', style='Intense Quote')
# 帶上小圓圈
document.add_paragraph(
'first item in unordered list', style='List Bullet'
)
# 帶上數字
document.add_paragraph(
'first item in ordered list', style='List Number'
)
# 添加圖片
document.add_picture('resources/beauty.png', width=Cm(3.2))
# 加分節符
document.add_section()
records = (
('小龍', '男', '1999-02-15'),
('小英', '女', '2000-10-20'),
('小白', '女', '1998-07-18')
)
table = document.add_table(rows=1, cols=3)
# 使用表格模板
table.style = 'Colorful List Accent 1'
hdr_cells = table.rows[0].cells
hdr_cells[0].text = '姓名'
hdr_cells[1].text = '性別'
hdr_cells[2].text = '生日'
for name, sex, birthday in records:
row_cells = table.add_row().cells
row_cells[0].text = name
row_cells[1].text = sex
row_cells[2].text = birthday
# 加分頁符
document.add_page_break()
document.save('resources/demo.docx')
生活中,可能需要批量地寫一些檔案,這時候可以利用Python來幫助我們完成重復性的作業,例如要批量地寫一些離職證明,我們可以通過讀入離職證明模板,通過錄入一些需要改動的資訊,生成不同人的離職證明,代碼如下所示:
from docx import Document
from docx.document import Document as Doc
employees = [
{
'name': '小龍',
'id': '100200198011280001',
'sdate': '2008年3月1日',
'edate': '2012年2月29日',
'department': '產品研發',
'position': '架構師'
},
{
'name': '小青',
'id': '510210199012125566',
'sdate': '2019年1月1日',
'edate': '2021年4月30日',
'department': '產品研發',
'position': 'Python開發工程師'
}
]
for emp_dict in employees:
doc = Document('resources/離職證明模板.docx') # type: Doc
for p in doc.paragraphs:
if '{' not in p.text:
continue
for run in p.runs:
if '{' not in run.text:
continue
# 將占位符換成實際內容
start, end = run.text.find('{'), run.text.find('}')
key, place_holder = run.text[start + 1:end], run.text[start:end + 1]
run.text = run.text.replace(place_holder, emp_dict[key])
doc.save(f'resources/{emp_dict["name"]}離職證明.docx')
在模板中,需要錄入資訊的地方使用占位符{}括起來
操作PDF檔案
讀取PDF并提取文字
在Python中,可以使用名為PyPDF2的三方庫來讀取PDF檔案,
import PyPDF2
from PyPDF2.pdf import PageObject
reader = PyPDF2.PdfFileReader('resources/XGBoost.pdf')
writer = PyPDF2.PdfFileWriter()
for page_num in range(reader.numPages):
current_page = reader.getPage(page_num) # type:PageObject
print(current_page.extractText())
current_page.rotateClockwise(90) # 順時針旋轉90度
writer.addPage(current_page)
writer.addBlankPage() # 添加空白頁
with open('resources/XGBoost-modified.pdf', 'wb') as file:
writer.write(file)
給PDF檔案添加密碼
使用encrypt函式可以實作PDF檔案的加密,這樣別人想打開你的檔案時,只有輸入正確的密碼,才能打開,
import PyPDF2
reader = PyPDF2.PdfFileReader('resources/XGBoost.pdf')
writer = PyPDF2.PdfFileWriter()
for page_num in range(reader.numPages):
writer.addPage(reader.getPage(page_num))
# 加密PDF檔案
writer.encrypt('123456')
with open('resources/XGBoost-encrypted.pdf', 'wb') as file:
writer.write(file)
給PDF檔案添加水印
原理是將水印檔案合并到需要添加的PDF檔案的每一頁上面,使用mergePage函式可以實作頁面的合并(重疊),
import PyPDF2
from PyPDF2.pdf import PageObject
reader1 = PyPDF2.PdfFileReader('resources/XGBoost.pdf')
reader2 = PyPDF2.PdfFileReader('resources/watermark.pdf')
writer = PyPDF2.PdfFileWriter()
watermark_page = reader2.getPage(0)
for page_num in range(reader1.numPages):
current_page = reader1.getPage(page_num) # type: PageObject
current_page.mergePage(watermark_page)
writer.addPage(current_page)
with open('resources/XGBoost-watermarked.pdf', 'wb') as file:
writer.write(file)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/293968.html
標籤:python
上一篇:Python代碼練習1
