ปรับปรุงล่าสุด: 29 ม.ค. 2025

ในบทความนี้ เราจะนำเสนอคำแนะนำเกี่ยวกับ วิธีการทำงานกับไฟล์ PDF ด้วย Python สำหรับการนี้เราจะใช้ไลบรารี pypdf
การใช้ไลบรารี pypdf เราจะแสดงวิธีการดำเนินการดังต่อไปนี้ใน Python:
- การดึงข้อความจากไฟล์ PDF
- หมุนหน้าของ PDF
- รวมไฟล์ PDF หลายไฟล์
- แยกไฟล์ PDF ออกเป็นไฟล์แยกต่างหาก
- เพิ่มลายน้ำลงบนหน้าของ PDF
หมายเหตุ: บทความนี้ครอบคลุมรายละเอียดจำนวนมาก สามารถข้ามไปที่ส่วนที่คุณสนใจได้เลย! เนื้อหาได้รับการจัดระเบียบเพื่อให้สามารถนำทางได้ง่าย คุณจึงสามารถมุ่งเน้นไปที่ส่วนที่เกี่ยวข้องมากที่สุดได้อย่างรวดเร็ว

ตัวอย่างโค้ด
คุณสามารถดาวน์โหลดโค้ดตัวอย่างทั้งหมดที่ใช้ในบทความนี้ได้จากลิงก์ด้านล่าง ซึ่งรวมถึงโค้ด ไฟล์นำเข้า และไฟล์ผลลัพธ์
ติดตั้ง pypdf
เพื่อที่จะติดตั้ง pypdf ให้รันคำสั่งต่อไปนี้ในเทอร์มินัลหรือคำสั่งพรอมต์:
pip install pypdf
หมายเหตุ: คำสั่งข้างต้นจำเป็นต้องพิมพ์ตัวอักษรตรงตามกรณีที่ระบุ
1. การดึงข้อความจากไฟล์ PDF โดยใช้ Python
คำอธิบายโค้ด
1. การสร้างวัตถุเครื่องอ่าน PDF
reader = PdfReader(pdf_file)
PdfReader(pdf_file)
โหลดไฟล์ PDF เข้าไปใน วัตถุเครื่องอ่าน- วัตถุนี้อนุญาตให้เข้าถึงหน้าและเนื้อหาของพวกเขา
2. วนรอบผ่านหน้า
for page_number, page in enumerate(reader.pages, start=1):
reader.pages
ส่งคืนรายการของหน้าที่อยู่ใน PDFenumerate(..., start=1)
กำหนด หมายเลขหน้าเริ่มต้นจาก 1
3. การพิมพ์ข้อความที่ดึงออกมา
print(f"Page {page_number}:")
print(page.extract_text())
print("-" * 50) # เส้นคั่นเพื่อความอ่านง่าย
page.extract_text()
ดึงเนื้อหาข้อความจากหน้าปัจจุบัน- สคริปต์พิมพ์ข้อความที่ดึงออกมาพร้อมกับ หมายเลขหน้า
"-" * 50
พิมพ์เส้นคั่น (--------------------------------------------------
) เพื่อความอ่านง่าย
ไฟล์ PDF ที่ใช้ในโค้ด
- ไฟล์นำเข้า: ลิงก์ดาวน์โหลด
ผลลัพธ์ของโค้ด
2. การหมุนหน้าของ PDF โดยใช้ Python
คำอธิบายโค้ด
โค้ดนี้หมุนหน้า แรก โดยเป็น 90° ทวนเข็มนาฬิกา และบันทึกไฟล์ PDF ที่แก้ไขโดยไม่กระทบกับหน้าที่อื่น
1. นำเข้าคลาสที่จำเป็น
from pypdf import PdfReader, PdfWriter
PdfReader
: อ่านไฟล์ PDF ที่นำเข้าPdfWriter
: สร้าง PDF ใหม่ที่ปรับเปลี่ยนแล้ว
2. กำหนดเส้นทางไฟล์นำเข้าและไฟล์ส่งออก
input_pdf = "pdf-to-rotate/input.pdf"
output_pdf = "pdf-to-rotate/rotated_output.pdf"
- สคริปต์อ่านจาก
input.pdf
และบันทึกไฟล์ที่แก้ไขเป็นrotated_output.pdf
3. อ่าน PDF และสร้างวัตถุเครื่องเขียน
reader = PdfReader(input_pdf)
writer = PdfWriter()
reader
โหลดไฟล์ PDF ที่มีอยู่writer
ใช้สำหรับเก็บหน้าที่แก้ไขแล้ว
4. หมุนหน้าแรกด้วย 90 องศา
page = reader.pages[0]
page.rotate(90) # หมุน 90 องศาทวนเข็มนาฬิกา
writer.add_page(page)
- ดึง หน้า 1 หมุน 90 องศา และเพิ่มไปยัง PDF ใหม่
5. เพิ่มหน้าที่เหลือโดยไม่เปลี่ยนแปลง
for i in range(1, len(reader.pages)):
writer.add_page(reader.pages[i])
- วนรอบผ่านหน้าที่เหลือแล้วเพิ่มพวกเขาไปในสภาพเดิม
6. บันทึก PDF ใหม่
with open(output_pdf, "wb") as file:
writer.write(file)
- เปิด
rotated_output.pdf
ในโหมดการเขียนแบบไบนารีและบันทึก PDF ใหม่
7. พิมพ์การยืนยัน
print(f"Rotated page saved to {output_pdf}")
- แสดงข้อความสำเร็จ
ไฟล์ PDF ที่ใช้ในโค้ดและผลลัพธ์การหมุน
- ไฟล์นำเข้า PDF: ลิงก์ดาวน์โหลด
- ไฟล์ PDF ที่หมุนแล้ว: ลิงก์ดาวน์โหลด
ภาพหน้าจอ
3. การรวมไฟล์ PDF โดยใช้ Python
สคริปต์ Python นี้แสดงวิธีการ รวมไฟล์ PDF หลายไฟล์ จากไดเรกทอรี่หนึ่งเข้าเป็น PDF ไฟล์เดียวโดยใช้ไลบรารี PyPDF
คำอธิบายโค้ด
- สคริปต์นี้รวมไฟล์ PDF ทั้งหมดที่พบในไดเรกทอรีที่ระบุ (
pdfs-to-merge
) เข้าไปเป็นไฟล์ส่งออกไฟล์เดียว (merged_output.pdf
) - มันแน่ใจว่าไดเรกทอรีส่งออกมีอยู่และเพิ่มหน้าจากไฟล์ PDF แต่ละไฟล์ตามลำดับที่ระบุ
- มันสร้างไฟล์สุดท้ายที่รวมอยู่ในไดเรกทอรี
output-dir
โครงสร้างของโค้ด
1. การนำเข้าสมุด
import os
from pypdf import PdfReader, PdfWriter
os
: ใช้ในการโต้ตอบกับระบบไฟล์ เช่น การอ่านไดเรกทอรีและการจัดการเส้นทางไฟล์PdfReader
: อ่านเนื้อหาไฟล์ PDFPdfWriter
: สร้างและเขียนไฟล์ PDF ใหม่
2. กำหนดไดเรกทอรีและไฟล์ส่งออก
directory = "pdfs-to-merge"
output_file = "output-dir/merged_output.pdf"
directory
: ระบุโฟลเดอร์ที่เก็บไฟล์ PDFoutput_file
: กำหนดเส้นทางและชื่อของไฟล์ PDF ที่รวมแล้ว
3. สร้างไดเรกทอรีส่งออกถ้ามันไม่มีอยู่
os.makedirs(os.path.join(directory, "output-dir"), exist_ok=True)
- สิ่งนี้เกลาว่า ไดเรกทอรีส่งออก มีอยู่ ถ้ามันไม่มีอยู่ มันจะสร้างให้
4. สร้างวัตถุ PdfWriter
writer = PdfWriter()
writer
ใช้ในการรวบรวมและรวมหน้าทั้งหมดจาก PDF
5. วนรอบไฟล์ PDF ทั้งหมดในไดเรกทอรี
for file_name in sorted(os.listdir(directory)):
if file_name.endswith(".pdf"):
file_path = os.path.join(directory, file_name)
print(f"Adding: {file_name}")
- วนรอบไฟล์ทั้งหมดในไดเรกทอรีที่ระบุ ตรวจสอบไฟล์ที่มีนามสกุล
.pdf
ใช้sorted()
เพื่อจัดเรียงและประมวลผลตามลำดับอักษร
6. อ่าน PDF แต่ละไฟล์และเพิ่มหน้าใน Writer
reader = PdfReader(file_path)
writer.append(reader)
- สำหรับแต่ละ PDF
PdfReader
จะอ่านไฟล์ จากนั้นทุกหน้าจาก PDF นั้นจะถูกเพิ่มไปยังwriter
7. เขียนไฟล์ PDF ที่รวมแล้วในไฟล์ส่งออก
output_path = os.path.join(directory, output_file)
with open(output_path, "wb") as output_pdf:
writer.write(output_pdf)
- หลังจากรวบรวมหน้าทั้งหมดแล้ว
writer.write()
จะเขียนไฟล์ PDF ที่รวมแล้วไปยังเส้นทางส่งออกที่ระบุ
8. พิมพ์การยืนยัน
print(f"Merged PDF saved as: {output_path}")
- พิมพ์ข้อความสำเร็จยืนยันที่ตั้งของไฟล์ PDF ที่รวมแล้ว
ไฟล์ PDF ต้นฉบับที่ใช้ในโค้ดและไฟล์ PDF ที่รวมแล้ว
- ไฟล์ PDF ต้นฉบับ: ลิงก์ดาวน์โหลด
- ไฟล์ PDF ที่รวมแล้ว: ลิงก์ดาวน์โหลด
4. การแยกไฟล์ PDF โดยใช้ Python
คำอธิบายโค้ด
สคริปต์ Python ข้างต้นแยกไฟล์ PDF ออกเป็นหน้าแยกโดยใช้ไลบรารี PyPDF มันจะตรวจสอบให้แน่ใจว่าไดเรกทอรีเอาต์พุตมีอยู่ จากนั้นอ่านไฟล์ PDF นำเข้า สคริปต์วนรอบผ่านแต่ละหน้า สร้างวัตถุ PdfWriter ใหม่ และบันทึกแต่ละหน้าเป็นไฟล์ PDF เดี่ยวๆ ไฟล์เอาต์พุตจะถูกตั้งชื่อตามลำดับ (เช่น page_1.pdf, page_2.pdf) และจัดเก็บไว้ในโฟลเดอร์ output-dir
สุดท้าย มันจะพิมพ์ข้อความยืนยันสำหรับไฟล์ที่สร้างขึ้นแต่ละไฟล์และแสดงเมื่อกระบวนการเสร็จสมบูรณ์
ไฟล์ PDF นำเข้าและไฟล์เอาต์พุตที่แยกออก
- ไฟล์ PDF นำเข้า: ลิงก์ดาวน์โหลด
- ไฟล์เอาต์พุตที่แยกออก: ลิงก์ดาวน์โหลด
5. การเพิ่มลายน้ำลงใน PDF โดยใช้ Python
คุณสามารถเพิ่มลายน้ำลงใน PDF โดยใช้ไลบรารี PyPDF โดยการซ้อนทับไฟล์ PDF ของลายน้ำลงในไฟล์ PDF ที่มีอยู่ ตรวจสอบให้แน่ใจว่าไฟล์ PDF ของลายน้ำมีเพียงหนึ่งหน้าเพื่อให้ลายน้ำสามารถใช้งานได้ถูกต้องในแต่ละหน้าของไฟล์หลัก
คำอธิบายโค้ด
สคริปต์ Python ข้างต้นอ่านไฟล์ PDF นำเข้า ดึงสาระ PDF ของลายน้ำที่มีเพียงหน้าเดียว ซ้อนทับลายน้ำในแต่ละหน้าของไฟล์ PDF นำเข้า และบันทึกไฟล์ PDF ที่มีลายน้ำสุดท้าย
โครงสร้างของโค้ด
นี่คือคำอธิบายโดยสังเขปของแต่ละส่วน
1. การนำเข้าคลาสที่จำเป็น
from pypdf import PdfReader, PdfWriter
PdfReader
ใช้ในการอ่านไฟล์ PDF ที่มีอยู่PdfWriter
ใช้ในการสร้างและเขียนไฟล์ PDF ใหม่
2. กำหนดเส้นทางไฟล์
input_pdf = "pdf-to-watermark/input.pdf"
watermark_pdf = "pdf-to-watermark/watermark.pdf"
output_pdf = "pdf-to-watermark/output_with_watermark.pdf"
input_pdf
: ไฟล์ PDF ต้นฉบับที่ต้องการเพิ่มลายน้ำwatermark_pdf
: ไฟล์ PDF ที่มีหน้าเดียวที่ใช้เป็นลายน้ำoutput_pdf
: ไฟล์เอาต์พุตที่มีหน้าที่มีลายน้ำ
3. อ่านไฟล์ PDF
reader = PdfReader(input_pdf)
watermark = PdfReader(watermark_pdf)
reader
: อ่านไฟล์ PDF ที่นำเข้าwatermark
: อ่านไฟล์ PDF ของลายน้ำ
4. สร้างวัตถุ Writer
writer = PdfWriter()
- จะใช้ในการสร้างไฟล์ PDF สุดท้ายที่มีลายน้ำ
5. ดึงหน้าลายน้ำ
watermark_page = watermark.pages[0]
- คาดว่าไฟล์ PDF ลายน้ำมีเพียง หน้าเดียว ที่ใช้ซ้อนทับในทุกหน้า
6. วนรอบหน้าของไฟล์ PDF นำเข้า & รวมลายน้ำ
for page in reader.pages:
# รวมลายน้ำกับหน้าปัจจุบัน
page.merge_page(watermark_page)
# เพิ่มหน้าที่รวมแล้วไปยัง writer
writer.add_page(page)
- วนรอบผ่านแต่ละหน้าของ
input_pdf
merge_page(watermark_page)
ซ้อนทับลายน้ำลงบนหน้าปัจจุบัน- เพิ่มหน้าที่ปรับเปลี่ยนแล้วไปยัง
writer
7. บันทึกไฟล์ PDF ที่มีลายน้ำ
with open(output_pdf, "wb") as output_file:
writer.write(output_file)
- เขียนหน้าที่ปรับเปลี่ยนไปในไฟล์ PDF ใหม่
8. พิมพ์ยืนยัน
print(f"Watermarked PDF saved as: {output_pdf}")
- พิมพ์เส้นทางไฟล์ส่งออกเพื่อยืนยันการสำเร็จของการทำงาน
ไฟล์ PDF นำเข้า, ไฟล์ PDF ลายน้ำ, และไฟล์ PDF ที่มีลายน้ำ
- ไฟล์ PDF นำเข้า: ลิงก์ดาวน์โหลด
- ไฟล์ PDF ลายน้ำ: ลิงก์ดาวน์โหลด
- ไฟล์ PDF ที่มีลายน้ำ: ลิงก์ดาวน์โหลด
ภาพหน้าจอ
สรุป
ในคำแนะนำนี้ เราได้สำรวจการทำงานที่สำคัญของ PDF ใน Python รวมถึงการดึงข้อความ หมุนหน้า รวม แยก และเพิ่มลายน้ำ ด้วยทักษะเหล่านี้ คุณสามารถสร้างตัวจัดการ PDF ของคุณเองและทำงานอัตโนมัติกับ PDF ต่างๆ ได้อย่างมีประสิทธิภาพ.