Dalam tutorial ini, saya memberikan contoh untuk menggabungkan/menggabungkan beberapa file PDF menjadi satu file PDF di Oracle menggunakan paket PLPDF_TOOLKIT PL/SQL.
Asumsikan Anda memiliki tabel untuk karyawan yang memiliki bidang BLOB dan untuk setiap karyawan tabel ini berisi beberapa dokumen dalam format PDF dan Anda ingin menggabungkan semua dokumen ini untuk seorang karyawan ke satu dokumen dan menyimpannya ke bidang BLOB tabel lain.
Anda bisa cek postingan saya sebelumnya untuk cara menyimpan file PDF ke kolom BLOB, berikut daftarnya:
- Bagaimana Cara Mendapatkan BLOB dari File di PL/SQL?
- Bagaimana Cara Menyimpan BLOB sebagai File di PL/SQL?
- Bagaimana Cara Mendapatkan File Dari BLOB di Oracle?
Dari posting yang disebutkan di atas, Anda akan belajar cara menyimpan PDF tunggal dan mengekstrak data BLOB yang berisi PDF tunggal. Di sini Anda akan mempelajari cara menggabungkan beberapa file PDF ke satu file PDF dan menyimpannya dalam BLOB.
Gabungkan/Gabungkan Beberapa PDF menjadi Satu File PDF Menggunakan Fungsi PLPDF_TOOLKIT.MERGE
Berikut ini adalah struktur sederhana tabel karyawan yang berisi beberapa file PDF (dalam beberapa catatan) yang disimpan dalam BLOB untuk setiap karyawan. Dari tabel ini, kita akan mendapatkan file untuk digabungkan. Untuk pengujian, buat tabel ini dan masukkan beberapa record (file PDF) untuk nomor karyawan 76465:
1. Buat Tabel Sumber
Create Table Emp_Docs ( empno number, blob_data blob );
2. Buat Tabel untuk Menyimpan PDF yang Digabung
Sekarang buat tabel untuk menyimpan file PDF gabungan untuk seorang karyawan:
Create Table Emp_Pdfs ( empno number, merged_pdf blob );
3. Buat Program PL/SQL untuk Menggabungkan PDF
Kemudian jalankan kode PL/SQL berikut untuk mendapatkan file PDF untuk karyawan 76465, gabungkan menjadi satu file PDF dan simpan ke tabel Emp_Pdfs. Untuk melakukan tugas ini, saya menggunakan fungsi PLPDF_TOOLKIT.MERGE.
Declare l_Blob1 BLOB; l_Blob2 BLOB; l_Blob3 BLOB; CURSOR Cur_empDocs IS SELECT blob_data, Rownum Row_n FROM emp_docs WHERE empno = 76465; n_Count INTEGER := 0; BEGIN FOR c IN Cur_empDocs LOOP IF c.row_n = 1 THEN Dbms_Lob.Createtemporary(Lob_Loc => l_Blob1, Cache => TRUE, Dur => Dbms_Lob.Call); l_Blob1 := c.blob_data; ELSE Dbms_Lob.Createtemporary(Lob_Loc => l_Blob2, Cache => TRUE, Dur => Dbms_Lob.Call); l_Blob2 := c.blob_data; Dbms_Lob.Createtemporary(Lob_Loc => l_Blob3, Cache => TRUE, Dur => Dbms_Lob.Call); l_Blob3 := Plpdf_Toolkit.Merge(l_Blob1, l_Blob2); l_Blob1 := l_Blob3; END IF; n_Count := n_Count + 1; END LOOP; IF n_Count > 0 THEN insert into emp_pdfs (empno, merged_pdf) values (76465, l_blob1); COMMIT; END IF; EXCEPTION WHEN OTHERS THEN raise; END;
Misalnya, jika ada 3 file PDF yang disimpan dalam 3 catatan untuk karyawan 76465, itu akan digabungkan menjadi satu PDF. Bahkan jika hanya ada satu dokumen PDF untuk seorang karyawan, maka itu akan menyimpan satu-satunya.
Anda dapat menanyakan tabel Emp_Pdfs untuk melihat hasilnya.
Lihat juga:
- Menampilkan BLOB Contents (PDF, Gambar) ke dalam Region di Oracle Apex Page
- Cara Membuat Laporan PDF Menggunakan PL/SQL
-
Menggunakan TUPLES untuk menempatkan lebih dari 1000 entri dalam klausa SQL IN
-
Bagaimana Mendapatkan Tanggal Saat Ini di PL/SQL?
-
Oracle:Kinerja Kumpulkan Massal
-
SQL (ORACLE):ORDER BY dan LIMIT
-
Bagaimana cara mendapatkan jumlah baris yang terpengaruh oleh pernyataan saat berada di dalam pemicu pernyataan itu?