2012-05-21 11 views
5

क्या सीएफपीडीएफ सीधे बाइनरी डेटाबेस कॉलम पढ़ सकता है?कोल्डफ्यूजन सीएफपीडीएफ एक बाइनरी डेटाबेस कॉलम पढ़ रहा है

मेरे पास वर्तमान में यह है जहां मैं कॉलम प्राप्त करने के लिए एक क्वेरी चलाता हूं।

उपयोग cffile एक निर्देशिका

फिर cfpdf के साथ पढ़ा तो मैं extracttext कर सकते हैं करने के लिए फ़ाइल लिखने के लिए।

क्या यह कैफाइल लिखने के बिना ऐसा करना संभव है और सीधे बाइनरी फ़ाइल को पढ़ना संभव है?

यदि हां, तो क्या मुझे एक उदाहरण मिल सकता है।

+0

अच्छा सवाल ... मैं भी यह जानना चाहता हूं। –

उत्तर

3

आप क्या संस्करण का उपयोग कर रहे हैं? CF9/एमएस एसक्यूएल (varbinary स्तंभ)

<cfquery name="getPdf" ....> 
    SELECT Data 
    FROM someTable 
    WHERE ID = 123 
</cfquery> 

<cfset pdfBinary = getPdf.data[1]> 
<cfpdf action="extractText" source="pdfBinary" name="result"> 
<cfdump var="#result#"> 

संपादित के साथ मेरे लिए काम किया है: स्पष्ट करने के लिए, cfpdf शिकायत जब आप "स्रोत" के रूप में queryName.columnName का उपयोग करें। मुझे संदेह है कि cfpdf इसे क्वेरी की पहली पंक्ति यानी queryName.columnName[ 1 ] में मान को स्वचालित रूप से हथियाने के बजाय क्वेरी क्वेरी ऑब्जेक्ट के रूप में देखता है। कार्य-आसपास इसका संदर्भ बनाना है, और इसके बजाय अन्य चर का उपयोग करना है।

+0

धन्यवाद लेघ, यह काम करता है और वही है जो मैं ढूंढ रहा था। हालांकि कोई भी इस धागे को पढ़ रहा है, मैं –

+0

के नीचे रैम फ़ाइल स्टोरेज चर्चा को पढ़ने के लिए प्रोत्साहित करता हूं, बड़े पीडीएफ/ब्लब्स के लिए, यह देखने के लिए दोनों तरीकों से प्रयोग करना उचित हो सकता है कि वीएफएस कोई सुधार प्रदान करता है या नहीं। – Leigh

+0

सीएफ़ 8 के लिए क्या किया जा सकता है पर कोई विचार? extractText उस संस्करण में एक मान्य विकल्प नहीं है। – Limey

1

मैं 100% यकीन नहीं है, लेकिन आप इस तरह कुछ करने के लिए सक्षम होना चाहिए:

<cfset myPDF = binaryEncode(binaryData,'base64')> 

<cfpdf action="read" source="myPDF" name="PDFObj"> 
+2

एक और विचार इसे कैफाइल का उपयोग कर रैम डिस्क पर लिखना होगा। यह बेहतर प्रदर्शन प्रदान करेगा और डिस्क पर लेखन को खत्म करेगा। http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSe9cbe5cf462523a0-70e2363b121825b20e7-8000.html –

+0

राम डिस्क विचार से प्यार करें। –

+0

मैं जोश द्वारा प्रदान किए गए लिंक में उदाहरणों का उपयोग करके काम करने के लिए मेमोरी प्राप्त करने में सक्षम था। एफवाईआई, प्रलेखन का कहना है कि सीएफपीडीएफ समर्थित नहीं है। हालांकि, यह वही है जो मैंने उपयोग किया था और ऐसा लगता है कि यह काम कर रहा है। *** सावधानी बरतें। यदि आप अपनी फाइलों को रैम से नहीं हटा रहे हैं तो आप अंततः अपनी सभी आवंटित जगह खा सकते हैं और एक क्रैश को मजबूर कर सकते हैं –

0

मैं एक साधारण ऐसा करने के लिए रास्ता मिल गया: इस कोड मैं विरासत में मिला है पहले से ही था

<cfheader name="Content-Disposition" value="inline; filename=test.pdf"> 
<cfcontent type="application/pdf" variable="#qGetFile.uploaded_file#"> 

, लेकिन यह कभी नहीं काम कर रहा था। मैंने पाया कि समस्या डेटास्रोत थी, न कि कोड; यह बीएलओबी स्वीकार करने के लिए तैयार नहीं था।

संबंधित मुद्दे