इस ट्यूटोरियल में, मैं PLPDF_TOOLKIT PL/SQL पैकेज का उपयोग करके Oracle में एक PDF फ़ाइल में एकाधिक PDF फ़ाइलों को मर्ज/एकीकृत करने के लिए एक उदाहरण दे रहा हूँ।
मान लें कि आपके पास BLOB फ़ील्ड वाले कर्मचारियों के लिए एक तालिका है और प्रत्येक कर्मचारी के लिए इस तालिका में PDF प्रारूप में कई दस्तावेज़ हैं और आप एक कर्मचारी के लिए इन सभी दस्तावेज़ों को एक दस्तावेज़ में मर्ज करना चाहते हैं और इसे किसी अन्य तालिका के BLOB फ़ील्ड में सहेजना चाहते हैं।
पीडीएफ फाइलों को बीएलओबी कॉलम में कैसे सेव करें, इसके लिए आप मेरी पिछली पोस्ट देख सकते हैं, नीचे दी गई सूची है:
- पीएल/एसक्यूएल में फाइल से बीएलओबी कैसे प्राप्त करें?
- पीएल/एसक्यूएल में बीएलओबी को फाइल के रूप में कैसे सेव करें?
- Oracle में BLOB से फ़ाइल कैसे प्राप्त करें?
उपर्युक्त पोस्ट से, आप सीखेंगे कि सिंगल पीडीएफ को कैसे सेव करें और सिंगल पीडीएफ वाले बीएलओबी डेटा को कैसे निकालें। यहां आप सीखेंगे कि एक से अधिक पीडीएफ फाइलों को एक पीडीएफ फाइल में कैसे संयोजित करें और एक बीएलओबी में स्टोर करें।
PLPDF_TOOLKIT.MERGE फ़ंक्शन का उपयोग करके एक से अधिक PDF को एक PDF फ़ाइल में मर्ज/एकीकृत करें
प्रत्येक कर्मचारी के लिए बीएलओबी में संग्रहीत कई पीडीएफ फाइलें (एकाधिक रिकॉर्ड में) रखने के लिए कर्मचारी तालिका की सरल संरचना निम्नलिखित है। इस तालिका से, हम फ़ाइलों को मर्ज करने के लिए प्राप्त करेंगे। परीक्षण के लिए, यह तालिका बनाएं और कर्मचारी संख्या 76465 के लिए कुछ एकाधिक रिकॉर्ड (पीडीएफ फाइलें) डालें:
1. स्रोत तालिका बनाएं
Create Table Emp_Docs ( empno number, blob_data blob );
2. मर्ज किए गए PDF को संग्रहीत करने के लिए एक तालिका बनाएं
अब एक कर्मचारी के लिए मर्ज की गई पीडीएफ फाइलों को स्टोर करने के लिए एक टेबल बनाएं:
Create Table Emp_Pdfs ( empno number, merged_pdf blob );
3. PDF को मर्ज करने के लिए PL/SQL प्रोग्राम बनाएं
फिर कर्मचारी 76465 के लिए पीडीएफ फाइलों को प्राप्त करने के लिए निम्नलिखित पीएल/एसक्यूएल कोड चलाएं, एक पीडीएफ फाइल में विलय करें और इसे Emp_Pdfs टेबल पर स्टोर करें। इस कार्य को करने के लिए, मैं 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; उदाहरण के लिए, यदि कर्मचारी 76465 के लिए 3 रिकॉर्ड में 3 PDF फ़ाइलें संग्रहीत हैं, तो इसे एक PDF में संयोजित किया जाएगा। यहां तक कि अगर किसी कर्मचारी के लिए केवल एक पीडीएफ दस्तावेज़ है तो वह केवल एक को ही संग्रहीत करेगा।
परिणाम देखने के लिए आप तालिका Emp_Pdfs को क्वेरी कर सकते हैं।
यह भी देखें:
- ओरेकल एपेक्स पेज में एक क्षेत्र में बीएलओबी सामग्री (पीडीएफ, छवियां) प्रदर्शित करें
- पीएल/एसक्यूएल का उपयोग करके पीडीएफ रिपोर्ट कैसे बनाएं
-
Oracle 11g डेटाबेस को दूरस्थ रूप से कैसे कनेक्ट करें
-
पीएल/एसक्यूएल का उपयोग करके ओरेकल में लॉग फाइल कैसे बनाएं?
-
पता लगाएं कि आपका सत्र Oracle में किस मुद्रा प्रतीक का उपयोग करता है
-
Oracle .Net ManagedDataAccess त्रुटि:असेंबली से 'OracleInternal.Common.ConfigBaseClass' प्रकार लोड नहीं कर सका
-
WHERE IN क्लॉज में उपयोग करने के लिए Oracle प्रक्रिया में मानों की एक सरणी भेजना