Simple Convert JPG ke PDF via Python

By | October 23, 2021
1,783 Views

Convert jpg to pdf merupakan aplikasi yang banyak digunakan selama masa CPNS kemarin lho, yaitu pada proses pemberkasan, nah salah satunya yang paling mudah menggunakan aplikasi berbasis online seperti https://jpg2pdf.com/id/. Saya sering menggunakannya koq tapi saya ada juga alternatif lain yaitu menggunakan coding saya melalui package Pillow, yups. Ternyata library ini bisa juga lho mengkonvert gambar *.png; *.jpg ke pdf! Bagi kalian yang belum tahu apa itu pillow bisa baca disini. Berikut Tahapan Convert Image/gambar ke PDF menggunakan Python

Pastikan kalian sudah install library Pillow melalui perintah pip

pip install Pillow

Kalian kalau masih bingung cara install package via pip, bisa lihat video ini

Convert Image/gambar ke PDF

Menggunakan kode simple berikut ini

from PIL import Image

image1 = Image.open('C:\Users\Ron\Desktop\Test\image1.png')
im1 = image1.convert('RGB')
im1.save('C:\Users\Ron\Desktop\Test\myFirstImage.pdf')

Kalian bisa melihat hasil nya sebagai berikut

Convert Multiple File Image  ke PDF

Jika file gambar yang digunakan banyak alias lebih dari satu, maka kita bisa menggunakan List sehingga menghasilkan beberapa halaman pdf sesuai dengan jumlah file gambar. Berikut misalkan terdapat 4 file gambar.

image1 = Image.open('C:\Users\Ron\Desktop\Test\image1.png')
image2 = Image.open('C:\Users\Ron\Desktop\Test\image2.png')
image3 = Image.open('C:\Users\Ron\Desktop\Test\image3.png')
image4 = Image.open('C:\Users\Ron\Desktop\Test\image4.png')

Lakukan konversi terlebih dahulu

im1 = image1.convert('RGB')
im2 = image2.convert('RGB')
im3 = image3.convert('RGB')
im4 = image4.convert('RGB')

Selanjutnya buat List

imagelist = [im2,im3,im4]

perhatikan bahwa yang dimasukan hanya im2 sampai im4 saja

Langkah selanjutnya gunakan kode berikut untuk menghasilkankan file pdf sekaligus menjadi sekaligus

im1.save('C:\Users\Ron\Desktop\Test\myImages.pdf',save_all=True, append_images=imagelist)

Membuat aplikasi berbasis GUI

Namun kode diatas, rasanya kurang praktis juga ya, kalaupun dibuat berbasis CLI. Kita ubah saja agar bisa menjadi berbasis GUI menggunakan library PySimpleGUI, dengan tampilan sebagai berikut (jangan lupa untuk install Library PySimpleGUI nya ya), misalkan saya buat file imagetopdf.py

See also  Apa itu format TFRecordDataset

Buat function

Untuk membuat otomatisasi membaca folder, kita buat terlebih dahulu sebuah function dengan 2 argument input yaitu lokasi_folder dan file_tujuan. Sebagai contoh, saya akan membaca semua file yang ada didalam folder dengan extension *.png (kalian ntar bisa ubah sendiri)

import PySimpleGUI as sg
from PIL import Image
import glob



def convert(lokasi_folder, file_tujuan):
    paths = glob.glob(str(lokasi_folder)+'/*.png') #lokasi folder nya
    paths.sort()
    imagelist = list()
    
    image1 = Image.open(paths[0])
    im1 = image1.convert('RGB')
        
    for i in range(1,len(paths)):
        images = Image.open(paths[i])
        ims = images.convert('RGB')
        imagelist.append(ims)          
    im1.save(file_tujuan,save_all=True, append_images=imagelist)

Buat Layout GUI nya

Selanjutnya kita buat layout GUI terdiri dari 2 textfield dan 4 button

layout = [[sg.Text('Sumber File PNG')],      
          [sg.Input(key='sumber_folder'), sg.FolderBrowse('Cari Folder Gambar)],
          [sg.Text('Hasil File PDF')],
          [sg.Input(key='target_file'),sg.FileSaveAs('Simpan File PDF',file_types=(('ALL Files', '*.pdf'),))],
          [sg.OK('Convert PDF'), sg.Exit('Keluar')] ]

Panggil GUI nya

Langkah terakhir panggil kode diatas agar menampilkan aplikasi berbasis GUI

window = sg.Window('Aplikasi Convert Gambar to PDF- www.softscients.com',layout)

while True:
    event,values = window.Read()
    try :
        if event in (None,'Keluar'):
            break
        if event == 'Convert PDF':
            folder_input = values['sumber_folder']
            text_output = values['target_file']
            if folder_input!='' and  text_output!='':
                print(str(folder_input),str(text_output))                
                convert(folder_input, text_output)
                sg.Popup('Info', 'Simpan di : '+text_output)
            else:
                print('Batal')
    except ValueError:
        print(ValueError)
        print('Terjadi kesalahan')
        break
    
window.Close()

Sangat simple kan! Kalian bisa ubah saja untuk extension nya seperti *.jpg dan *.png