Python: Pdf2Docx

Tadi malam saya ingin mengirimkan dokumen yang harusnya dikirim dalam bentuk docx, namun file yang dikirim ke saya ada yang berbentuk docx ada yang pdf.

Males juga mengubah secara manual dari pdf ke docx. Apalagi jumlahnya mungkin sekitar 20-an file.

Ok, kita selesaikan dengan Python:

pip install Converter
pip install pdf2docx

Kemudian gunakan skrips eperti ini:

# install dulu librarynya:
# pip install Converter
# pip install pdf2docx

from pdf2docx import Converter
import os

### dir_path for input reading and output files & a for loop ###

path_input = './cay-pdf/'
path_output = './cay-output/'

# Pastikan folder output ada, jika tidak buat
os.makedirs(path_output, exist_ok=True)

# Loop melalui semua file di folder input
for file in os.listdir(path_input):
    # Filter hanya file PDF
    if file.lower().endswith('.pdf'):
        # Dapatkan nama file tanpa ekstensi
        file_name = os.path.splitext(file)[0]

        # Path lengkap untuk input dan output
        input_path = os.path.join(path_input, file)
        output_path = os.path.join(path_output, file_name + '.docx')

        # Konversi file
        try:
            cv = Converter(input_path)
            cv.convert(output_path, start=0, end=None)
            cv.close()
            print(f"Berhasil mengonversi: {file}")
        except Exception as e:
            print(f"Error saat mengonversi {file}: {e}")

Terus hasilnya bagaimana. Ya, lumayanlah …

Membuat File Bacaan Sholat

Saya “terpaksa” membuat file bacaan sholat sendiri karena saya sulit mendapatkan file bacaan sholat dengan kriteria:

  1. Lengkap (sampai pada doa sesudah sholat)
  2. Ringkas ( bacaannya mengambil bacaan yang tidak lambat dan mengambil versi pendeknya saja)

Mengapa? Karena file-file itu akan saya gunakan untuk menuntun sholat orang yang sakit menahun yang ingatannya tidak terlalu baik, seperti orang alzimer, stroke, atau penyakit tua.

Sebenarnya saya nemu beberapa di internet, namun yang lengkap dari sholat subuh sampai isya tidak saya ketemukan.

Saya sendiri pada dasarnya berat untuk merekam bacaan sholat dari Subuh sampai Isya. Apalagi kamu tahu dalam rekaman, sering ada kesalahan di tengah-tengah. Berat.

Akhirnya saya membuat pecahan bacaan-bacaan sholat itu. Saya merekamnya dengan Audacity yang juga baru saya install.

  1. niat-sholat-subuh.mp3
  2. niat-sholat-dhuhur.mp3
  3. niat-sholat-ashar.mp3
  4. niat-sholat-maghrib.mp3
  5. niat-sholat-isya.mp3
  6. doa-iftitah.mp3
  7. surat-alfatihah.mp3
  8. surat-alikhlash.mp3
  9. surat-annas.mp3
  10. rukuk-sujud.mp3
  11. rukuk-qunut-sujud.mp3
  12. attahiyat-awwal.mp3
  13. attahiyat-akhir.mp3
  14. doa-sesudah-sholat.mp3

Jadi saya hanya merekam 14 file saja, yang nanti harus disusun berdasarkan sholatnya.

Untuk memudahkan penggabungan saya mempunyai kiat khusus

  1. Pada akhir file niat, rukuk – sujud, rukuk – qunut – sujud, attahiyat awwal diakhiri dengan takbir
  2. Pada akhir attahiyat akhir diakhiri dengan salam.

Dengan demikian saya tidak harus membuat file takbir dan salam sendiri.

Kedua, soal penggabungan file mp3-nya saya serahkan kepada python dengan program yang tentu saja minta bantuan chatgpt :D.

Install ffmpeg

Berikut cara untuk menginstall ffmpeg di Windows. Tanpa ffmpeg, kamu tidak akan bisa menggabungkan file mp3.

  1. Unduh ffmpeg:
    • Buka situs ffmpeg.org dan unduh versi yang sesuai dengan sistem operasi Anda (Windows).
    • Pilih link untuk versi static build untuk memudahkan instalasi.
  2. Ekstrak ffmpeg:
    • Setelah mengunduh, ekstrak file ZIP ke folder yang mudah diakses, misalnya C:\ffmpeg.
  3. Tambahkan ffmpeg ke PATH:
    • Buka Control Panel > System and Security > System > Advanced System Settings.
    • Klik tombol Environment Variables.
    • Di bagian System variables, cari variabel Path, kemudian klik Edit.
    • Klik New dan tambahkan lokasi folder bin dari ffmpeg, misalnya:
      C:\ffmpeg\bin
    • Klik OK pada semua jendela untuk menyimpan perubahan.
  4. Cek Instalasi ffmpeg:
    • Buka command prompt dan jalankan perintah berikut untuk memastikan ffmpeg terinstall dengan benar:
      ffmpeg -version
    • Jika instalasi berhasil, Anda akan melihat informasi versi ffmpeg yang terinstall.

Menggabungkan file Mp3

Berikut studi kasus untuk untuk sholat Isya

Jangan lupa jika kamu belum menginstall library pydub di python, install dulu dengan:.

pip install pydub

Sebenarnya library inilah yang membutuhkan ffmpeg.

Berikut program penggabungannya:

from pydub import AudioSegment
# Fungsi untuk memuat, menormalkan, dan menggabungkan audio
def load_and_combine(files):
    combined = AudioSegment.empty()  # Inisialisasi audio kosong
    for file in files:
        audio = AudioSegment.from_mp3(file)  # Muat file MP3
        audio = audio.normalize()  # Normalkan audio untuk menyelaraskan volume
        combined += audio  # Gabungkan audio
    return combined

# Daftar file MP3 untuk setiap bagian
niat_dan_rakaat_pertama = [
    "niat-sholat-isya.mp3",
    "doa-iftitah.mp3",
    "surat-alfatihah.mp3",
    "surat-alikhlash.mp3",
    "rukuk-sujud.mp3"
]

rakaat_kedua = [
    "surat-alfatihah.mp3",
    "surat-annas.mp3",
    "rukuk-sujud.mp3",
    "attahiyat-awwal.mp3"
]

rakaat_ketiga = [
    "surat-alfatihah.mp3",
    "rukuk-sujud.mp3"
]

rakaat_keempat_dan_doa = [
    "surat-alfatihah.mp3",
    "rukuk-sujud.mp3",
    "attahiyat-akhir.mp3",
    "doa-sesudah-sholat.mp3"
]

# Gabungkan setiap bagian
combined_niat_dan_rakaat_pertama = load_and_combine(niat_dan_rakaat_pertama)
combined_rakaat_kedua = load_and_combine(rakaat_kedua)
combined_rakaat_ketiga = load_and_combine(rakaat_ketiga)
combined_rakaat_keempat_dan_doa = load_and_combine(rakaat_keempat_dan_doa)

# Gabungkan semua bagian menjadi satu audio
final_audio = (combined_niat_dan_rakaat_pertama + combined_rakaat_kedua + 
               combined_rakaat_ketiga + combined_rakaat_keempat_dan_doa)

# Simpan hasil gabungan ke file baru
final_audio.export("sholat_isya.mp3", format="mp3")

Penjelasan

  • audio.normalize(): Menormalkan setiap file audio sehingga tingkat volume seimbang sebelum digabungkan.
  • Hasil akhirnya akan disimpan dalam file sholat_isya.mp3, dengan volume yang seragam di semua bagian.

Ok demikian sebagai catatan singkat pengalaman hari ini. Mudah-mudahan bermanfaat.

PHP – QRCode

Malam-malam lemburan untuk membuat aplikasi yang mengharuskan menggunakan QRCode. Cari library sederhana saja karena saya menggunakan PHP 7.4. Download include selesai.

Dapat library yang sederhana dari sini

  1. Malas Ngoding
  2. PHP Pot

Mereka berdua nampaknya mendapatkan library PHP – QRCode dari sini: SourceForge  . Masih menggunakan PHP 5, namun masih berjalan dengan baik di PHP 7.4.

Kalau ingin contoh kode lengkap silahkan merapat disini.

Tutorialnya ada pada situs yang saya sebutkan diatas. Saya nggak buat tutorial sendiri. Lha apa gunanya HTTP kalau kalau harus buat turorial sendiri. Hahahaha, dasar malas …

Data Palsu (Fake Data) Buat Simulasi

Tadi saya minta tolong kepada ChatGPT untuk membuatkan data dummy yang isinya nama, nomor telp dan alamat. Namun saya malah dikasih contoh skrip Pythn untuk masalah ini.

Data dummy seperti ini bagi saya penting karena ketika kita ingin membuat simulasi, atau training, atau aplikasi kita membutuhkan data contoh.

import random
import faker
import pandas as pd

# Inisialisasi Faker
fake = faker.Faker('id_ID')

# Membuat 100 data acak
data_list = []
for _ in range(100):
    nama = fake.name()
    nomor_hp = fake.phone_number()        
    alamat = fake.address().replace("\n", " ")
    
    data_list.append({
        'Nama': nama,
        'Nomor HP': nomor_hp,
        'Alamat': alamat
    })

df = pd.DataFrame(data_list)
df.to_csv('alamat.csv')
print('Generate data selesai')

Hasilnya cukup bagus, sayangnya data antar kolom tidak berelasi, sehingga city() Surabaya namun state() Jawa Barat, Lah …

Tapi ya lumayanlah buat sekedar mainan.

Baca dokumentasinya disini. Atau tulisan tentang Faker disini .