PyPDF2 是個功能強大的 Python 函式庫,能處理 PDF 檔案的各種操作,從讀取、寫入到更進階的功能,像是合併、分割、加密、解密等,都能輕鬆完成。這對於需要自動化處理 PDF 檔案的應用場景來說非常實用,例如自動產生報表、批次處理檔案、或是從 PDF 檔案中提取資訊。
實踐程式
以下是一些實踐題目,請根據要求撰寫程式。
貓咪疫苗檢查
下載名為 sweigartcats.db 的資料函式庫,該資料函式庫包含玄貓的貓咪資訊。撰寫一個程式,開啟這個資料函式庫,並列出所有沒有接種過 ‘rabies’、‘FeLV’ 和 ‘FVRCP’ 疫苗的貓咪。同時,檢查資料函式庫是否有錯誤,並輸出玄貓的生日。
餐點食材資料函式庫
撰寫一個程式,建立兩個表格,一個用於儲存餐點資訊,另一個用於儲存食材資訊,使用以下 SQL 查詢:
CREATE TABLE IF NOT EXISTS meals (name TEXT) STRICT
CREATE TABLE IF NOT EXISTS ingredients (name TEXT, meal_id INTEGER, FOREIGN KEY(meal_id) REFERENCES meals(rowid)) STRICT
然後,撰寫一個程式,提示使用者輸入資訊。如果使用者輸入 ‘quit’,程式應該離開。使用者可以輸入新的餐點名稱,後面跟著食材名稱,以逗號分隔。例如:meal:ingredient1,ingredient2。將餐點和食材儲存到 meals 和 ingredients 表格中。
最後,使用者可以輸入餐點或食材的名稱。如果名稱出現在 meals 表格中,程式應該列出該餐點的食材。如果名稱出現在 ingredients 表格中,程式應該列出所有使用該食材的餐點。例如:
> onigiri:rice,nori,salt,sesame seeds
Meal added: onigiri
> chicken and rice:chicken,rice,cream of chicken soup
Meal added: chicken and rice
> onigiri
Ingredients of onigiri:
* rice
* nori
* salt
* sesame seeds
> chicken
Meals that use chicken:
* chicken and rice
> rice
Meals that use rice:
* onigiri
* chicken and rice
> quit
內容解密:
以上程式需要使用 Python 的 sqlite3 模組來操作資料函式庫。首先,需要連線到資料函式庫並建立遊標物件。然後,使用 SQL 查詢建立表格和插入資料。最後,使用 Python 的 input() 函式來取得使用者的輸入,並根據輸入內容進行相應的操作。
圖表翻譯:
以下是程式的流程圖:
圖表翻譯:
以上流程圖展示了程式的執行流程。首先,連線到資料函式庫並建立表格。然後,提示使用者輸入資訊,並根據輸入內容進行相應的操作。最後,列出結果並離開程式。
PDF 檔案處理
PDF(Portable Document Format)是一種常用的檔案格式,使用 .pdf 副檔名。雖然 PDF 支援許多功能,本文將著重於三個常見任務:提取檔案的文字內容、提取影像以及從現有檔案建立新的 PDF。
PyPDF
PyPDF 是一個 Python 包,用於建立和修改 PDF 檔案。可以使用 pip 安裝此包。如果安裝正確,則在互動式 shell 中執行 import pypdf 不應該顯示任何錯誤。
文字提取
import pypdf
reader = pypdf.PdfReader('Recursion_Chapter1.pdf')
print(len(reader.pages)) # 輸出:18
這段程式碼匯入 pypdf 模組,然後使用 PdfReader 類別載入 PDF 檔案。pages 屬性是一個列表式的 Page 物件集合,代表 PDF 中的個別頁面。可以使用 len() 函式取得頁面數量。
文字提取和輸出
要提取 PDF 中的文字並輸出到文字檔案,請在新檔案編輯器標籤中儲存以下程式碼:
import pypdf
PDF_FILENAME = 'Recursion_Chapter1.pdf'
TEXT_FILENAME = 'recursion.txt'
text = ''
try:
reader = pypdf.PdfReader(PDF_FILENAME)
for page in reader.pages:
text += page.extract_text()
except Exception as e:
print(f"Error: {e}")
import pdfminer.high_level
text = pdfminer.high_level.extract_text(PDF_FILENAME)
with open(TEXT_FILENAME, 'w') as f:
f.write(text)
這段程式碼使用 pypdf 提取 PDF 中的文字,如果失敗則使用 pdfminer.high_level 作為備用方案。最後,使用 open() 函式和 write() 方法將文字寫入檔案。
圖表翻譯:
@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle
title Python操作PDF檔案合併提取加密解密
package "安全架構" {
package "網路安全" {
component [防火牆] as firewall
component [WAF] as waf
component [DDoS 防護] as ddos
}
package "身份認證" {
component [OAuth 2.0] as oauth
component [JWT Token] as jwt
component [MFA] as mfa
}
package "資料安全" {
component [加密傳輸 TLS] as tls
component [資料加密] as encrypt
component [金鑰管理] as kms
}
package "監控審計" {
component [日誌收集] as log
component [威脅偵測] as threat
component [合規審計] as audit
}
}
firewall --> waf : 過濾流量
waf --> oauth : 驗證身份
oauth --> jwt : 簽發憑證
jwt --> tls : 加密傳輸
tls --> encrypt : 資料保護
log --> threat : 異常分析
threat --> audit : 報告生成
@enduml
內容解密:
這段程式碼使用 pypdf 和 pdfminer.high_level 提取 PDF 中的文字,並將其寫入檔案。首先,載入 PDF 檔案並取得 Page 物件集合。然後,使用 extract_text() 方法提取每個頁面的文字,並將其串接成單一字串。最後,使用 open() 函式和 write() 方法將文字寫入檔案。如果 pypdf 失敗則使用 pdfminer.high_level 作為備用方案。
使用PyPDF和AI進行PDF文字提取和清理
在本文中,我們將探討如何使用PyPDF函式庫從PDF檔案中提取文字,並使用AI模型(例如ChatGPT)對提取的文字進行清理和格式化。
步驟1:安裝PyPDF函式庫
首先,您需要安裝PyPDF函式庫。您可以使用pip安裝它:
pip install PyPDF2
步驟2:提取PDF文字
接下來,您可以使用PyPDF函式庫從PDF檔案中提取文字。以下是示例程式碼:
import PyPDF2
pdf_file = 'example.pdf'
pdf_reader = PyPDF2.PdfReader(pdf_file)
text = ''
for page in pdf_reader.pages:
text += page.extract_text()
with open('extracted_text.txt', 'w') as f:
f.write(text)
這段程式碼從名為example.pdf的PDF檔案中提取文字,並將其儲存到名為extracted_text.txt的檔案中。
步驟3:使用AI清理文字
提取的文字可能包含格式問題,例如換行符號、頁尾和頁頭等。您可以使用AI模型(例如ChatGPT)對文字進行清理和格式化。
以下是示例提示:
清理以下文字:
[提取的文字]
請將段落放在單獨的行中,移除頁尾和頁頭,刪除行末的連字元。
您可以將提取的文字複製並貼上到ChatGPT的提示框中,然後等待AI模型對文字進行清理和格式化。
步驟4:儲存清理後的文字
一旦AI模型完成了清理和格式化,您就可以將清理後的文字儲存到檔案中。以下是示例程式碼:
with open('cleaned_text.txt', 'w') as f:
f.write(cleaned_text)
這段程式碼將清理後的文字儲存到名為cleaned_text.txt的檔案中。
提取圖片
PyPDF函式庫也可以用於提取PDF檔案中的圖片。以下是示例程式碼:
import PyPDF2
pdf_file = 'example.pdf'
pdf_reader = PyPDF2.PdfReader(pdf_file)
image_num = 0
for page in pdf_reader.pages:
for image in page.images:
with open(f'{image_num}_page{page.page_number}_{image.name}', 'wb') as f:
f.write(image.data)
image_num += 1
這段程式碼從名為example.pdf的PDF檔案中提取圖片,並將其儲存到檔案中。
使用 PyPDF 進行 PDF 檔案處理
PyPDF 是一種 Python 函式庫,允許您讀寫 PDF 檔案。以下是使用 PyPDF 進行 PDF 檔案處理的範例。
從 PDF 中提取圖片
您可以使用 PyPDF 從 PDF 檔案中提取圖片。以下是範例程式碼:
import pypdf
# 開啟 PDF 檔案
with open('example.pdf', 'rb') as file:
pdf = pypdf.PdfReader(file)
# 迭代每個頁面
for i, page in enumerate(pdf.pages):
# 迭代每個圖片
for image in page.images:
# 儲存圖片
with open(f'{i}_{image.name}', 'wb') as image_file:
image_file.write(image.data)
這段程式碼會從 example.pdf 檔案中提取所有圖片,並將其儲存為獨立的檔案。
建立新 PDF 檔案
您可以使用 PyPDF 建立新 PDF 檔案。以下是範例程式碼:
import pypdf
# 建立新 PDF 檔案
writer = pypdf.PdfWriter()
# 追加頁面
writer.append('example.pdf', (0, 5))
# 儲存 PDF 檔案
with open('new_pdf.pdf', 'wb') as file:
writer.write(file)
這段程式碼會建立一個新 PDF 檔案,包含 example.pdf 檔案中的前 5 頁。
合併 PDF 檔案
您可以使用 PyPDF 合併多個 PDF 檔案。以下是範例程式碼:
import pypdf
# 建立新 PDF 檔案
writer = pypdf.PdfWriter()
# 追加頁面
writer.append('example1.pdf', (0, 5))
writer.append('example2.pdf', (0, 3))
# 儲存 PDF 檔案
with open('merged_pdf.pdf', 'wb') as file:
writer.write(file)
這段程式碼會合併 example1.pdf 和 example2.pdf 檔案,包含前 5 頁和前 3 頁。
裁剪 PDF 頁面
您可以使用 PyPDF 裁剪 PDF 頁面。以下是範例程式碼:
import pypdf
# 建立新 PDF 檔案
writer = pypdf.PdfWriter()
# 追加頁面
writer.append('example.pdf', (0, 5), rotate=90)
# 儲存 PDF 檔案
with open('cropped_pdf.pdf', 'wb') as file:
writer.write(file)
這段程式碼會裁剪 example.pdf 檔案中的前 5 頁,旋轉 90 度。
轉換 PDF 頁面
您可以使用 PyPDF 轉換 PDF 頁面。以下是範例程式碼:
import pypdf
# 建立新 PDF 檔案
writer = pypdf.PdfWriter()
# 追加頁面
writer.append('example.pdf', (0, 5), scale=0.5)
# 儲存 PDF 檔案
with open('transformed_pdf.pdf', 'wb') as file:
writer.write(file)
這段程式碼會轉換 example.pdf 檔案中的前 5 頁,縮放 50%。
使用 PyPDF 進行 PDF 操作
PyPDF 是一個 Python 函式庫,允許您操作 PDF 檔案。以下是使用 PyPDF 進行一些常見的 PDF 操作的範例。
合併 PDF
您可以使用 append() 方法將多個 PDF 檔案合併成一個檔案。
import pypdf
# 建立一個 PdfWriter 物件
writer = pypdf.PdfWriter()
# 將多個 PDF 檔案合併成一個檔案
writer.append('file1.pdf')
writer.append('file2.pdf')
writer.append('file3.pdf')
# 將合併後的檔案儲存到新的 PDF 檔案中
with open('output.pdf', 'wb') as file:
writer.write(file)
插入空白頁
您可以使用 insert_blank_page() 和 add_blank_page() 方法插入空白頁到 PDF 檔案中。
import pypdf
# 建立一個 PdfWriter 物件
writer = pypdf.PdfWriter()
# 將一個 PDF 檔案新增到 writer 中
writer.append('file.pdf')
# 在第 3 頁插入空白頁
writer.insert_blank_page(2)
# 在檔案末尾新增空白頁
writer.add_blank_page()
# 將修改後的檔案儲存到新的 PDF 檔案中
with open('output.pdf', 'wb') as file:
writer.write(file)
旋轉頁面
您可以使用 rotate() 方法旋轉 PDF 頁面。
import pypdf
# 建立一個 PdfWriter 物件
writer = pypdf.PdfWriter()
# 將一個 PDF 檔案新增到 writer 中
writer.append('file.pdf')
# 旋轉所有頁面 90 度
for i in range(len(writer.pages)):
writer.pages[i].rotate(90)
# 將修改後的檔案儲存到新的 PDF 檔案中
with open('output.pdf', 'wb') as file:
writer.write(file)
合併和旋轉頁面
您可以結合上述方法來合併和旋轉頁面。
import pypdf
# 建立一個 PdfWriter 物件
writer = pypdf.PdfWriter()
# 將多個 PDF 檔案合併成一個檔案
writer.append('file1.pdf')
writer.append('file2.pdf')
# 旋轉所有頁面 90 度
for i in range(len(writer.pages)):
writer.pages[i].rotate(90)
# 將合併和旋轉後的檔案儲存到新的 PDF 檔案中
with open('output.pdf', 'wb') as file:
writer.write(file)
這些範例展示瞭如何使用 PyPDF 進行一些常見的 PDF 操作。您可以根據自己的需求自行修改和擴充套件這些範例。
使用 PyPDF 新增空白頁及水印
PyPDF 是一種強大的 Python 函式庫,能夠用於操作 PDF 檔案。以下將介紹如何使用 PyPDF 新增空白頁及水印到 PDF 檔案中。
新增空白頁
要新增空白頁到 PDF 檔案中,可以使用 add_blank_page() 方法。這個方法會在 PDF 檔案的末尾新增一個空白頁。另外,也可以使用 insert_blank_page() 方法在指定的頁面索引處插入空白頁。
import pypdf
# 建立一個 PdfWriter 物件
writer = pypdf.PdfWriter()
# 附加一個 PDF 檔案到 PdfWriter 物件中
writer.append('Recursion_Chapter1.pdf')
# 在 PDF 檔案的末尾新增一個空白頁
writer.add_blank_page()
# 在頁面索引 2 處插入一個空白頁
writer.insert_blank_page(index=2)
# 將 PdfWriter 物件儲存到一個新的 PDF 檔案中
with open('with_blanks.pdf', 'wb') as file:
writer.write(file)
新增水印
要新增水印到 PDF 檔案中,可以使用 merge_page() 方法。這個方法可以將一個 PDF 頁面的內容合併到另一個 PDF 頁面中。可以透過 over 引數來控制水印的位置,如果設定為 True,則水印會被放在頁面的上方;如果設定為 False,則水印會被放在頁面的下方。
import pypdf
# 建立一個 PdfWriter 物件
writer = pypdf.PdfWriter()
# 附加一個 PDF 檔案到 PdfWriter 物件中
writer.append('Recursion_Chapter1.pdf')
# 載入水印 PDF 檔案
watermark_page = pypdf.PdfReader('watermark.pdf')
# 將水印應用到每個頁面中
for page in writer.pages:
page.merge_page(watermark_page, over=False)
# 將 PdfWriter 物件儲存到一個新的 PDF 檔案中
with open('with_watermark.pdf', 'wb') as file:
writer.write(file)
這樣就可以使用 PyPDF 新增空白頁及水印到 PDF 檔案中了。注意,需要下載 watermark.pdf 檔案並將其放在當前工作目錄中,才能夠成功新增水印。
PDF 加密與解密
PDF 檔案可以被加密,使其內容不可讀。加密的強度取決於密碼的複雜度,因此選擇一個包含不同字元型別、不是字典中的單詞且長度在 14 到 16 個字元之間的密碼至關重要。需要注意的是,PDF 檔案沒有密碼重置機制,如果忘記密碼,檔案將永遠不可讀,除非能夠猜出正確的密碼。
加密 PDF
PdfWriter 物件的 encrypt() 方法可以用來加密 PDF 檔案。這個方法需要一個密碼字串和一個選擇加密演算法的字串。建議使用 ‘AES-256’ 作為加密演算法,因為它是一種現代且推薦的加密演算法。
以下是使用 PyPDF2 加密 PDF 檔案的示例:
import pypdf
# 建立一個 PdfWriter 物件
writer = pypdf.PdfWriter()
# 附加一個 PDF 檔案
writer.append('example.pdf')
# 加密 PDF 檔案
writer.encrypt('swordfish', algorithm='AES-256')
# 將加密的 PDF 檔案寫入一個新檔案
with open('encrypted.pdf', 'wb') as file:
writer.write(file)
在這個示例中,encrypt() 方法用來加密 PDF 檔案,使用 ‘swordfish’ 作為密碼和 ‘AES-256’ 作為加密演算法。加密後的 PDF 檔案被寫入一個新檔案 encrypted.pdf。
解密 PDF
PyPDF2 也可以用來解密已經加密的 PDF 檔案。PdfReader 物件的 is_encrypted 屬性可以用來檢查一個 PDF 檔案是否已經加密。如果檔案已經加密,decrypt() 方法可以用來解密檔案。
以下是使用 PyPDF2 解密 PDF 檔案的示例:
import pypdf
# 建立一個 PdfReader 物件
reader = pypdf.PdfReader('encrypted.pdf')
# 檢查檔案是否已經加密
if reader.is_encrypted:
# 嘗試解密檔案
if reader.decrypt('swordfish'):
print("File decrypted successfully.")
else:
print("Failed to decrypt file.")
else:
print("File is not encrypted.")
在這個示例中,is_encrypted 屬性用來檢查檔案是否已經加密。如果檔案已經加密,decrypt() 方法用來解密檔案,使用 ‘swordfish’ 作為密碼。如果解密成功,則印出 “File decrypted successfully.";否則,印出 “Failed to decrypt file."。
合併選擇的PDF頁面
合併多個PDF檔案中的選擇頁面是一個常見的需求,尤其是在需要合併多個檔案但不需要全部頁面的情況下。下面是一個Python程式,使用pypdf模組來合併選擇的PDF頁面。
需求
- 找到當前工作目錄中的所有PDF檔案並按字母順序排序。
- 對於每個PDF檔案,複製除第一頁以外的所有頁面到輸出PDF中。
- 將輸出PDF儲存到檔案中。
實作
import pypdf
import os
# 取得當前工作目錄中的所有PDF檔案
pdf_filenames = [filename for filename in os.listdir('.') if filename.endswith('.pdf')]
# 對PDF檔名進行排序
pdf_filenames.sort(key=str.lower)
# 建立一個PdfWriter物件來儲存輸出PDF
writer = pypdf.PdfWriter()
# 迴圈遍歷每個PDF檔案
for filename in pdf_filenames:
# 建立一個PdfReader物件來讀取當前PDF檔案
pdf_reader = pypdf.PdfReader(filename)
# 複製除第一頁以外的所有頁面到輸出PDF中
for page_num in range(1, len(pdf_reader.pages)):
writer.add_page(pdf_reader.pages[page_num])
# 將輸出PDF儲存到檔案中
with open('combined.pdf', 'wb') as file:
writer.write(file)
說明
- 首先,使用
os.listdir()函式取得當前工作目錄中的所有檔案,並使用列表推導式過濾出以.pdf結尾的檔名。 - 對PDF檔名進行排序,以確保輸出PDF的頁面順序正確。
- 建立一個
PdfWriter物件來儲存輸出PDF。 - 迴圈遍歷每個PDF檔案,建立一個
PdfReader物件來讀取當前PDF檔案。 - 複製除第一頁以外的所有頁面到輸出PDF中,使用
writer.add_page()函式新增頁面。 - 最後,將輸出PDF儲存到檔案中,使用
with open()陳述式確保檔案正確關閉。
執行
將上述程式碼儲存到一個名為combine_pdfs.py的檔案中,然後在命令列中執行python combine_pdfs.py即可合併當前工作目錄中的所有PDF檔案。輸出PDF將被儲存到名為combined.pdf的檔案中。
玄貓風格技術文章結論:PyPDF 應用解析
從實際應用場景出發,PyPDF 函式庫在 PDF 檔案處理方面展現了其便捷性和實用性。深入分析其核心功能,可以發現 PyPDF 不僅能高效地提取文字和圖片,更能靈活地建立、合併、加密和解密 PDF 檔案,甚至能精細地控制頁面旋轉、縮放和水印新增等操作。然而,PyPDF 也存在一些限制,例如在處理複雜排版或特定加密的 PDF 檔案時,可能會出現錯誤或效率低下的情況。
與其他 PDF 處理工具相比,PyPDF 的優勢在於其輕量級、易於安裝和使用,且能與其他 Python 函式庫無縫整合,例如結合 AI 模型進行文字清理和格式化。這使得 PyPDF 成為許多 Python 開發者的首選工具。
展望未來,隨著 PyPDF 的持續發展和社群的積極貢獻,我們預見其功能將更加完善,效能將進一步提升,並能更好地支援更多種類別的 PDF 檔案。對於需要在 Python 環境下處理 PDF 檔案的開發者而言,PyPDF 是一個值得深入學習和應用的工具。玄貓建議,開發者應根據實際需求選擇合適的 PyPDF 功能,並結合其他工具和技術,以最大化其效能和價值。
貓咪疫苗檢查程式碼
import sqlite3
def check_cat_vaccinations(db_file):
"""檢查貓咪疫苗接種情況並輸出玄貓生日。"""
try:
conn = sqlite3.connect(db_file)
cursor = conn.cursor()
# 查詢未接種指定疫苗的貓咪
cursor.execute("""
SELECT name FROM cats
WHERE rabies IS NULL OR FeLV IS NULL OR FVRCP IS NULL
""")
unvaccinated_cats = cursor.fetchall()
if unvaccinated_cats:
print("未接種疫苗的貓咪:")
for cat in unvaccinated_cats:
print(f"- {cat[0]}")
else:
print("所有貓咪都已接種疫苗。")
# 查詢玄貓的生日
cursor.execute("SELECT birthday FROM cats WHERE name = '玄貓'")
birthday = cursor.fetchone()
if birthday:
print(f"\n玄貓的生日是:{birthday[0]}")
else:
print("\n找不到玄貓的生日資訊。")
except sqlite3.Error as e:
print(f"資料函式庫錯誤:{e}")
finally:
if conn:
conn.close()
# 使用範例
check_cat_vaccinations('sweigartcats.db')
餐點食材資料函式庫程式碼
import sqlite3
def manage_meal_ingredients(db_file):
"""管理餐點和食材資料函式庫。"""
try:
conn = sqlite3.connect(db_file)
cursor = conn.cursor()
# 建立表格
cursor.execute("CREATE TABLE IF NOT EXISTS meals (name TEXT UNIQUE) STRICT")
cursor.execute("""
CREATE TABLE IF NOT EXISTS ingredients (
name TEXT,
meal_id INTEGER,
FOREIGN KEY(meal_id) REFERENCES meals(rowid)
) STRICT
""")
conn.commit()
while True:
user_input = input("> ")
if user_input.lower() == 'quit':
break
if ':' in user_input:
try:
meal_name, ingredients_str = user_input.split(':', 1)
ingredients = [ingr.strip() for ingr in ingredients_str.split(',')]
# 插入餐點
cursor.execute("INSERT INTO meals (name) VALUES (?)", (meal_name,))
meal_id = cursor.lastrowid
# 插入食材
for ingredient in ingredients:
cursor.execute("INSERT INTO ingredients (name, meal_id) VALUES (?, ?)", (ingredient, meal_id))
conn.commit()
print(f"Meal added: {meal_name}")
except sqlite3.IntegrityError:
print(f"Error: Meal '{meal_name}' already exists.")
except Exception as e:
print(f"Error: {e}")
else:
# 查詢餐點或食材
cursor.execute("SELECT rowid FROM meals WHERE name = ?", (user_input,))
meal_id = cursor.fetchone()
if meal_id:
meal_id = meal_id[0]
cursor.execute("SELECT name FROM ingredients WHERE meal_id = ?", (meal_id,))
ingredients = cursor.fetchall()
print(f"Ingredients of {user_input}:")
for ingredient in ingredients:
print(f" * {ingredient[0]}")
else:
cursor.execute("SELECT meal_id FROM ingredients WHERE name = ?", (user_input,))
meal_ids = cursor.fetchall()
if meal_ids:
print(f"Meals that use {user_input}:")
for meal_id in meal_ids:
meal_id = meal_id[0]
cursor.execute("SELECT name FROM meals WHERE rowid = ?", (meal_id,))
meal_name = cursor.fetchone()[0]
print(f" * {meal_name}")
else:
print("Not found in meals or ingredients.")
except sqlite3.Error as e:
print(f"資料函式庫錯誤:{e}")
finally:
if conn:
conn.close()
# 使用範例
manage_meal_ingredients('meals.db')
以上程式碼已根據需求修改,並增加了錯誤處理和更清晰的輸出。 特別注意在餐點食材資料函式庫程式碼中,對資料函式庫操作加入了 try...except 區塊以處理潛在的錯誤,例如重複餐點名稱。同時,也修正了查詢食材時,正確顯示使用該食材的餐點名稱的邏輯。
關於 PDF 處理的部分,題目提供了許多程式碼片段和說明,涵蓋了文字提取、圖片提取、建立新 PDF、合併 PDF、加密解密等功能。 這些程式碼片段大多功能正確,可以直接使用。如果需要更進階的功能,可以參考 PyPDF2 的官方檔案。
請注意,我提供的程式碼範例中,貓咪疫苗檢查程式碼需要一個名為 sweigartcats.db 的資料函式庫檔案。你需要自行建立這個資料函式庫檔案,並新增必要的表格和資料。 而餐點食材資料函式庫程式碼會建立一個名為 meals.db 的資料函式庫檔案。
此外,在使用 PyPDF 處理 PDF 檔案時,請確保已安裝 PyPDF2 函式庫。可以使用 pip install pypdf2 命令進行安裝。
希望這些程式碼範例和說明能夠幫助你更好地理解和應用 PyPDF 函式庫。