Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Gabungkan/Gabungkan Beberapa File PDF menjadi Satu PDF di Oracle Menggunakan Paket PLPDF_TOOLKIT PL/SQL

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menggunakan TUPLES untuk menempatkan lebih dari 1000 entri dalam klausa SQL IN

  2. Bagaimana Mendapatkan Tanggal Saat Ini di PL/SQL?

  3. Oracle:Kinerja Kumpulkan Massal

  4. SQL (ORACLE):ORDER BY dan LIMIT

  5. Bagaimana cara mendapatkan jumlah baris yang terpengaruh oleh pernyataan saat berada di dalam pemicu pernyataan itu?