2008-09-16 11 views
13

मैं अपने सीएफएम पेज द्वारा जेनरेट किए गए एचटीएमएल को पीडीएफ में बदलना चाहता हूं, और उपयोगकर्ता ने मेरे पेज पर नेविगेट करते समय मानक "सेव एज़" प्रॉम्प्ट के साथ संकेत दिया है।मैं कोल्डफ्यूजन पेज को पीडीएफ डाउनलोड में कैसे बदलूं?

उत्तर

17

आप (प्रारूप = "पीडीएफ" के साथ) cfdocument टैग का उपयोग पेज आप पैदा कर रहे हैं चारों ओर रखकर पीडीएफ उत्पन्न करने के लिए करना चाहिए। आप एक फ़ाइल नाम विशेषता निर्दिष्ट करना चाहेंगे, अन्यथा दस्तावेज़ केवल आपके ब्राउज़र पर स्ट्रीम करेगा।

सामग्री को पीडीएफ के रूप में सहेजने के बाद, पीडीएफ को अनुलग्नक के रूप में आउटपुट करने के लिए संयोजन में सीएफहेडर और सीएफकंटेंट का उपयोग करें ("इस रूप में सहेजें") और प्रतिक्रिया स्ट्रीम में फ़ाइल जोड़ें। फाइल सिस्टम को फाइलों को साफ रखने के लिए मैंने cfcontent टैग पर deletefile = "Yes" भी जोड़ा।

<cfdocument format="PDF" filename="file.pdf" overwrite="Yes"> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
<head> 
    <title>Hello World</title> 
</head> 
<body> 
    Hello World 
</body> 
</html> 
</cfdocument> 
<cfheader name="Content-Disposition" value="attachment;filename=file.pdf"> 
<cfcontent type="application/octet-stream" file="#expandPath('.')#\file.pdf" deletefile="Yes"> 

एक अलग रूप में के रूप में: मैं बस नीचे दिए गए उदाहरण में फ़ाइल नाम के लिए file.pdf उपयोग कर रहा हूँ, लेकिन आप फ़ाइल नाम के लिए कुछ यादृच्छिक या सत्र उत्पन्न स्ट्रिंग का उपयोग करना दौड़ की स्थिति से उत्पन्न समस्याओं से बचने कर सकते हैं।

1

मुझे लगता है कि ColdFusion से परिचित नहीं हूँ, लेकिन आप क्या करना पेज के सामग्री प्रकार सेट कर दिया जाता है जब उपयोगकर्ता द्वारा अनुरोध करने आवेदन/ओकटेट धारा की जरूरत है। यह उन्हें हर बार डाउनलोड के लिए संकेत देगा।

आशा है कि इससे मदद मिलती है!

3

यदि आप पीडीएफ को स्टोर करने से बचाना चाहते हैं, तो फ़ाइल नाम के बिना cfdocument का उपयोग करके पीएफएफ (फ्लैशपेपर) सीधे सीएफहेडर और सीएफकंटेंट का उपयोग किए बिना ब्राउज़र पर भेज देगा।

चेतावनी: सीएफहेडर/सीएफकंटेंट का उपयोग करने की तरह, आपको ब्राउज़र में कैश फिसलने से पहले ऐसा करने की ज़रूरत है, क्योंकि यह मूल रूप से फ़ाइल को स्टोर किए बिना वही काम कर रहा है।

सामग्री प्राप्त करने के लिए, मैं शायद cfsavecontent एक ही कॉल के चारों ओर लिपटा/शामिल/आदि का प्रयोग करेंगे। जो पृष्ठ को दो प्रमुख अपवादों के साथ उत्पन्न करता है। cfdocument में बाहरी स्टाइलशीट के साथ समस्याएं प्रतीत होती हैं, इसलिए शैलियों को सीधे दस्तावेज़ में डालने के लिए शामिल करना संभवतः एक अच्छा विचार है। आप इसके बजाय @import का उपयोग करने का प्रयास कर सकते हैं - यह कुछ लोगों के लिए काम करता है। इसके अलावा, मैं छवियों के सापेक्ष लिंक के बारे में सावधान रहूंगा, क्योंकि वे कभी-कभी तोड़ सकते हैं।

3

<cfdocument> दृष्टिकोण इसे पूरा करने के लिए स्वीकृत तरीका है, हालांकि यह मौजूदा पीडीएफ दस्तावेजों में हेरफेर करने के तरीके में सबकुछ संभव नहीं है। मेरे पास एक प्रोजेक्ट था जहां मुझे प्री-डिज़ाइन, प्रिंट-रेज़ोल्यूशन पीडीएफ टेम्पलेट का उपयोग करके कूपन उत्पन्न करने की आवश्यकता थी। <cfdocument> मुझे आउटपुट का अनुमान लगाएगा, लेकिन केवल HTML में एम्बेडेड बिटमैप छवियों के साथ। सच है, मैं एक बड़ी छवि बनाकर और इसे HTML में स्केल करके नकली प्रिंट-रेज़ोल्यूशन कर सकता था, लेकिन मूल एक अच्छी, साफ, वेक्टर-छवि फ़ाइल थी और मैं इसके बजाय इसका उपयोग करना चाहता था।

मैं <cfx_pdf> की एक प्रति का उपयोग कर काम करवाने के लिए समाप्त हो गया। (Developer's Site, CF Tag Store) यह एक जावा पीडीएफ लाइब्रेरी के आसपास एक सीएफ रैपर है जो आपको पीडीएफ फॉर्म भरने, अनुमतियों को सेट करने, फ़ाइलों को विलय करने, वेक्टर ग्राफिक्स, टेबल और टेक्स्ट ड्राइंग, कस्टम फोंट आदि का उपयोग करने सहित मौजूदा पीडीएफ दस्तावेज़ों में हेरफेर करने देता है। यदि आप इसके साथ काम करने के इच्छुक हैं, तो आप कुछ सुंदर शानदार परिणाम प्राप्त कर सकते हैं।

एक दोष यह ऐसा लगता है कि डेवलपर एक लंबे समय के लिए चारागाह के लिए बाहर इस उत्पाद के लिए छोड़ दिया गया है। डेवलपर साइट अभी भी कॉपीराइट 2003 है और कोल्डफ्यूजन एमएक्स 6.1 के पिछले कुछ भी उल्लेख नहीं करती है। मैंने कुछ बग को ठीक करने के लिए कुछ एन्क्रिप्टेड टेम्पलेट्स को तोड़ने और इसे काम करने के लिए समाप्त कर दिया क्योंकि मुझे इसकी आवश्यकता थी। फिर भी, यह एक शक्तिशाली उपकरण है।

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