Terakhir Diperbarui: 29 Jan, 2025

Judul - Mengelola File PDF dengan Python

Pada artikel ini, kami akan memandu Anda tentang cara mengelola file PDF menggunakan Python. Untuk ini, kita akan memanfaatkan pustaka pypdf.

Menggunakan pustaka pypdf, kami akan mendemonstrasikan bagaimana melakukan operasi berikut di Python:

  • Mengekstrak teks dari PDF
  • Memutar halaman PDF
  • Menggabungkan beberapa PDF
  • Membagi PDF menjadi file terpisah
  • Menambahkan watermark ke halaman PDF

Catatan: Artikel ini mencakup banyak detail berharga, jadi jangan ragu untuk melewati bagian yang paling menarik untuk Anda! Konten diatur untuk navigasi yang mudah, sehingga Anda bisa fokus cepat pada apa yang paling relevan untuk Anda.

Ilustrasi - Mengelola File PDF dengan Python

Contoh Kode

Anda dapat mengunduh semua kode contoh yang digunakan dalam artikel ini dari tautan berikut. Ini mencakup kode, file input, dan file output.

Instalasi pypdf

Untuk menginstal pypdf, jalankan perintah berikut di terminal atau command prompt Anda:

pip install pypdf

Catatan: Perintah di atas peka terhadap huruf besar-kecil.

1. Mengekstrak Teks dari File PDF Menggunakan Python

Penjelasan Kode

1. Membuat Objek Pembaca PDF

reader = PdfReader(pdf_file)
  • PdfReader(pdf_file) memuat file PDF ke dalam objek pembaca.
  • Objek ini memungkinkan akses ke halaman dan isinya.

2. Melakukan Perulangan Pada Halaman

for page_number, page in enumerate(reader.pages, start=1):
  • reader.pages mengembalikan daftar halaman dalam PDF.
  • enumerate(..., start=1) memberikan nomor halaman mulai dari 1.

3. Mencetak Teks yang Diambil

    print(f"Page {page_number}:")
    print(page.extract_text())
    print("-" * 50)  # Pemisah untuk keterbacaan
  • page.extract_text() mengekstrak konten teks dari halaman saat ini.
  • Skrip mencetak teks yang diekstrak beserta nomor halaman.
  • "-" * 50 mencetak garis pemisah (--------------------------------------------------) agar lebih mudah dibaca.

File PDF Input yang Digunakan dalam Kode

Output dari Kode

2. Memutar Halaman PDF Menggunakan Python

Penjelasan Kode

Kode tersebut pada dasarnya memutar halaman pertama sebanyak 90° searah jarum jam dan menyimpan PDF yang telah dimodifikasi tanpa memengaruhi halaman lain.

1. Mengimpor Kelas yang Diperlukan

from pypdf import PdfReader, PdfWriter
  • PdfReader: Membaca PDF input.
  • PdfWriter: Membuat PDF baru dengan modifikasi.

2. Menentukan Jalur File Input dan Output

input_pdf = "pdf-to-rotate/input.pdf"
output_pdf = "pdf-to-rotate/rotated_output.pdf"
  • Skrip membaca dari input.pdf dan menyimpan file yang dimodifikasi sebagai rotated_output.pdf.

3. Membaca PDF dan Membuat Objek Penulis

reader = PdfReader(input_pdf)
writer = PdfWriter()
  • reader memuat PDF yang ada.
  • writer digunakan untuk menyimpan halaman yang dimodifikasi.

4. Memutar Halaman Pertama Sebesar 90 Derajat

page = reader.pages[0]
page.rotate(90)  # Memutar 90 derajat searah jarum jam
writer.add_page(page)
  • Memilih halaman 1, memutar 90 derajat, dan menambahkannya ke PDF baru.

5. Menambah Halaman Tersisa Tanpa Perubahan

for i in range(1, len(reader.pages)):
    writer.add_page(reader.pages[i])
  • Melakukan perulangan melalui halaman lain dan menambahkannya sebagaimana adanya.

6. Menyimpan PDF Baru

with open(output_pdf, "wb") as file:
    writer.write(file)
  • Membuka rotated_output.pdf dalam mode tulis-biner dan menyimpan PDF baru.

7. Mencetak Konfirmasi

print(f"Rotated page saved to {output_pdf}")
  • Menampilkan pesan keberhasilan.

File PDF Input yang Digunakan dalam Kode dan Output yang Sudah Diputar

Screenshot Screenshot dari Halaman yang Diputar dalam PDF Menggunakan Python

3. Menggabungkan File PDF Menggunakan Python

Skrip Python ini menunjukkan cara untuk menggabungkan beberapa file PDF dari direktori menjadi satu PDF menggunakan pustaka PyPDF.

Penjelasan Kode

  • Skrip ini secara otomatis menggabungkan semua file PDF yang ditemukan di direktori yang ditentukan (pdfs-to-merge) ke dalam satu file output (merged_output.pdf).
  • Ia memastikan bahwa direktori output ada dan menambahkan halaman dari tiap PDF dalam urutan yang ada.
  • Ia menghasilkan file gabungan akhir di subdirektori output-dir.

Pembagian Kode

1. Mengimpor Pustaka

import os
from pypdf import PdfReader, PdfWriter
  • os: Digunakan untuk berinteraksi dengan sistem file, seperti membaca direktori dan mengelola jalur file.
  • PdfReader: Membaca konten dari file PDF.
  • PdfWriter: Membuat dan menulis file PDF baru.

2. Menentukan Direktori dan File Output

directory = "pdfs-to-merge"
output_file = "output-dir/merged_output.pdf"
  • directory: Menentukan folder di mana file PDF disimpan.
  • output_file: Menentukan jalur output dan nama dari PDF yang digabungkan.

3. Membuat Direktori Output jika Tidak Ada

os.makedirs(os.path.join(directory, "output-dir"), exist_ok=True)
  • Ini memastikan direktori output ada, dan jika tidak, ia membuatnya.

4. Membuat Objek PdfWriter

writer = PdfWriter()
  • writer digunakan untuk mengumpulkan dan menggabungkan semua halaman dari PDF.

5. Melakukan Perulangan Pada Semua File PDF di Direktori

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}")
  • Loop ini berjalan melalui semua file di direktori yang ditentukan, memeriksa file dengan ekstensi .pdf. Ia menggunakan sorted() untuk memprosesnya dalam urutan abjad.

6. Membaca Setiap PDF dan Menambah Halaman ke Penulis

reader = PdfReader(file_path)
writer.append(reader)
  • Untuk setiap PDF, PdfReader membaca file, dan kemudian semua halaman dari PDF tersebut ditambahkan ke writer.

7. Menulis PDF yang Digabungkan ke File Output

output_path = os.path.join(directory, output_file)
with open(output_path, "wb") as output_pdf:
    writer.write(output_pdf)
  • Setelah mengumpulkan semua halaman, writer.write() menulis PDF yang digabungkan ke jalur output yang ditentukan.

8. Mencetak Konfirmasi

print(f"Merged PDF saved as: {output_path}")
  • Mencetak pesan keberhasilan yang mengonfirmasikan lokasi file PDF yang digabungkan.

File PDF Input yang Digunakan dalam Kode dan PDF Output yang Digabungkan

4. Membagi PDF Menggunakan Python

Penjelasan Kode

Skrip Python di atas membagi PDF menjadi beberapa halaman menggunakan pustaka PyPDF. Pertama, ia memastikan bahwa direktori output ada, kemudian membaca file PDF input. Skrip melakukan perulangan pada setiap halaman, membuat objek PdfWriter baru, dan menyimpan setiap halaman sebagai file PDF individu. File output diberi nama berurutan (misalnya, page_1.pdf, page_2.pdf) dan disimpan di folder output-dir. Akhirnya, ia mencetak pesan konfirmasi untuk setiap file yang dibuat dan memberi tahu saat proses selesai.

PDF Input dan File Output yang Dibagi

5. Menambahkan Watermark ke PDF Menggunakan Python

Anda dapat menambahkan watermark pada PDF menggunakan pustaka PyPDF dengan menutupi PDF watermark ke PDF yang ada. Pastikan PDF watermark hanya memiliki satu halaman sehingga dapat diterapkan dengan benar ke setiap halaman dari PDF utama.

Penjelasan Kode

Skrip Python di atas membaca PDF input, mengekstrak PDF watermark satu halaman, menutupi watermark pada setiap halaman dari PDF input, dan menyimpan PDF yang telah diberi watermark.

Pembagian Kode

Berikut adalah penjelasan singkat tentang setiap bagian

1. Mengimpor Kelas yang Diperlukan

from pypdf import PdfReader, PdfWriter
  • PdfReader digunakan untuk membaca PDF yang ada.
  • PdfWriter digunakan untuk membuat dan menulis PDF baru.

2. Menentukan Jalur File

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 asli yang akan ditambahkan watermark.
  • watermark_pdf: PDF terpisah dengan satu halaman yang berfungsi sebagai watermark.
  • output_pdf: File output yang akan berisi halaman yang telah diberi watermark.

3. Membaca PDF

reader = PdfReader(input_pdf)
watermark = PdfReader(watermark_pdf)
  • reader: Membaca PDF input.
  • watermark: Membaca PDF watermark.

4. Membuat Objek Penulis

writer = PdfWriter()
  • Ini akan digunakan untuk membuat PDF akhir yang telah diberi watermark.

5. Mengekstrak Halaman Watermark

watermark_page = watermark.pages[0]
  • Asumsikan bahwa PDF watermark hanya memiliki satu halaman, yang akan digunakan untuk menutupi semua halaman.

6. Melakukan Perulangan Pada Halaman PDF Input & Menggabungkan Watermark

for page in reader.pages:
    # Menggabungkan watermark dengan halaman saat ini
    page.merge_page(watermark_page)
    
    # Menambahkan halaman yang telah digabungkan ke penulis
    writer.add_page(page)
  • Melakukan iterasi pada setiap halaman dari input_pdf.
  • merge_page(watermark_page) menutupi watermark di atas halaman saat ini.
  • Menambahkan halaman yang telah dimodifikasi ke dalam writer.

7. Menyimpan PDF yang Telah Diberi Watermark

with open(output_pdf, "wb") as output_file:
    writer.write(output_file)
  • Menulis halaman yang telah dimodifikasi ke dalam file PDF baru.

8. Mencetak Konfirmasi

print(f"Watermarked PDF saved as: {output_pdf}")
  • Mencetak jalur file output untuk konfirmasi.

PDF Input, PDF Watermark, dan PDF Output yang Telah Diberi Watermark

Screenshot Screenshot dari PDF yang Diberi Watermark Menggunakan Python

Kesimpulan

Dalam panduan ini, kami mengeksplorasi operasi PDF penting di Python, termasuk mengekstrak teks, memutar halaman, menggabungkan, membagi, dan menambahkan watermark. Dengan keterampilan ini, Anda sekarang dapat membangun pengelola PDF Anda sendiri dan mengotomatisasi berbagai tugas PDF secara efisien.