Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Zusammenführen/Kombinieren mehrerer PDF-Dateien zu einem PDF in Oracle mit dem PLPDF_TOOLKIT PL/SQL-Paket

In diesem Tutorial gebe ich ein Beispiel zum Zusammenführen/Kombinieren mehrerer PDF-Dateien zu einer PDF-Datei in Oracle mit dem PLPDF_TOOLKIT PL/SQL-Paket.

Angenommen, Sie haben eine Tabelle für Mitarbeiter mit einem BLOB-Feld und für jeden Mitarbeiter enthält diese Tabelle mehrere Dokumente im PDF-Format und Sie möchten alle diese Dokumente für einen Mitarbeiter zu einem Dokument zusammenführen und im BLOB-Feld einer anderen Tabelle speichern.

Sie können meine vorherigen Posts zum Speichern von PDF-Dateien in einer BLOB-Spalte lesen, unten ist die Liste:

  • Wie erhalte ich BLOB aus einer Datei in PL/SQL?
  • Wie speichert man BLOB als Datei in PL/SQL?
  • Wie bekomme ich eine Datei von BLOB in Oracle?

In den oben genannten Beiträgen erfahren Sie, wie Sie einzelne PDF-Dateien speichern und die BLOB-Daten extrahieren, die einzelne PDF-Dateien enthalten. Hier erfahren Sie, wie Sie mehrere PDF-Dateien zu einer PDF-Datei zusammenfassen und in einem BLOB speichern.

Mehrere PDFs mit der Funktion PLPDF_TOOLKIT.MERGE zu einer PDF-Datei zusammenführen/kombinieren

Das Folgende ist die einfache Struktur einer Mitarbeitertabelle, die mehrere PDF-Dateien (in mehreren Datensätzen) enthält, die in BLOB für jeden Mitarbeiter gespeichert sind. Aus dieser Tabelle erhalten wir die Dateien zum Zusammenführen. Erstellen Sie zum Testen diese Tabelle und fügen Sie mehrere Datensätze (PDF-Dateien) für die Mitarbeiternummer 76465 ​​ein:

1. Erstellen Sie eine Quelltabelle

Create Table Emp_Docs (
empno number,
blob_data blob
);

2. Erstellen Sie eine Tabelle zum Speichern von zusammengeführten PDFs

Erstellen Sie nun eine Tabelle zum Speichern der zusammengeführten PDF-Dateien für einen Mitarbeiter:

Create Table Emp_Pdfs (
empno number,
merged_pdf blob
);

3. Erstellen Sie ein PL/SQL-Programm zum Zusammenführen von PDFs

Führen Sie dann den folgenden PL/SQL-Code aus, um die PDF-Dateien für einen Mitarbeiter 76465 ​​abzurufen, zu einer PDF-Datei zusammenzuführen und in der Tabelle Emp_Pdfs zu speichern. Um diese Aufgabe auszuführen, verwende ich die Funktion 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;

Wenn beispielsweise 3 PDF-Dateien in 3 Datensätzen für den Mitarbeiter 76465 ​​gespeichert sind, werden diese zu einem PDF zusammengefasst. Auch wenn es nur ein PDF-Dokument für einen Mitarbeiter gibt, wird nur das einzige gespeichert.

Sie können die Tabelle Emp_Pdfs abfragen, um das Ergebnis zu sehen.

Siehe auch:

  • Anzeigen von BLOB-Inhalten (PDF, Bilder) in einer Region auf der Oracle Apex-Seite
  • Erstellung eines PDF-Berichts mit PL/SQL