मेरे पास पीडीएफ फॉर्म हैं जो मैं अपने डीजेंगो वेब एप्लिकेशन से डेटा के साथ ऑटोपॉप्लेट करना चाहता हूं और फिर उपयोगकर्ता को डाउनलोड करने की पेशकश करता हूं। क्या पाइथन लाइब्रेरी मुझे आसानी से पीडीएफ फॉर्मों को पॉप-अप करने देगी? इन रूपों का मुद्रित होना है।मैं Django/पायथन में पीडीएफ फॉर्म को स्वतः कैसे पॉप्युलेट कर सकता हूं?
उत्तर
रिपोर्टलैब बहुत बढ़िया है यदि आप बहुत गतिशील पीडीएफ उत्पन्न कर रहे हैं और इसे प्रोग्रामेटिक रूप से नियंत्रित करने की आवश्यकता है: डेटा और लेआउट।
मौजूदा पीडीएफ में फॉर्म भरने के लिए, रिपोर्टलैब अधिक है और आपको मूल रूप से पीडीएफ को एक फॉर्म के साथ पीडीएफ लेने के बजाय रिपोर्टबैब में स्क्रैच से पुनर्निर्माण करना होगा।
पीडीएफ फॉर्म FDF डेटा के साथ काम करते हैं। मैंने थोड़ी देर पहले एक पीएचडी एफडीएफ लाइब्रेरी को पाइथन में पोर्ट किया था जब मुझे ऐसा करना था और इसे fdfgen के रूप में जारी किया गया था। मैं उस फॉर्म के डेटा के साथ एक एफडीएफ फ़ाइल उत्पन्न करने के लिए उपयोग करता हूं, फिर एफडीएफ को पीडीएफ फॉर्म में धक्का देने और आउटपुट उत्पन्न करने के लिए pdftk का उपयोग करें।
पूरी प्रक्रिया इस तरह काम करता है:
- आप (या एक डिजाइनर) एक्रोबेट या जो कुछ भी में पीडीएफ डिजाइन और प्रपत्र फ़ील्ड्स चिह्नित करने और क्षेत्र के नाम को ध्यान में रखना (मैं वास्तव में कैसे यकीन नहीं है यह किया जाता है; हमारा डिजाइनर यह कदम करता है)। मान लें कि आपके फॉर्म में फ़ील्ड "नाम" और "टेलीफोन" है।
pdftk form.pdf fill_form data.fdf output output.pdf flatten
और बाहर भरा, चपटा (जिसका अर्थ है एक वहाँ अब संपादन योग्य हैं कि:
from fdfgen import forge_fdf fields = [('name','John Smith'),('telephone','555-1234')] fdf = forge_fdf("",fields,[],[],[]) fdf_file = open("data.fdf","w") fdf_file.write(fdf) fdf_file.close()
तो फिर तुम विलय और समतल pdftk चलाएँ:
उपयोग fdfgen एक FDF फ़ाइल बनाने के लिए फार्म फ़ील्ड) पीडीएफ output.pdf में होगा।
यह थोड़ा जटिल है, और pdftk स्थापित करने के लिए एक दर्द हो सकता है (एक जावा ढेर की आवश्यकता है और वहाँ है कि चारों ओर काम करने की उबंटू 9.10 पर कीड़े कर रहे हैं), लेकिन यह सबसे सरल प्रक्रिया मैं कर लिया है है अभी तक आओ और वर्कफ़्लो सुविधाजनक है (यानी, हमारे डिजाइनर अपने इच्छित पीडीएफ में सभी लेआउट परिवर्तन कर सकते हैं और जब तक वे फ़ील्ड के नाम नहीं बदलते हैं, तो मैं नया ड्रॉप कर सकता हूं और सबकुछ बाकी रहता है काम कर रहे)।
मैं fdfgen पर दस्तावेज़ों की कमी के लिए क्षमा चाहता हूं। forge_fdf() वास्तव में एकमात्र ऐसा कार्य है जिसकी आपको आवश्यकता होनी चाहिए और इसमें तर्कों को समझाने के लिए एक दस्तावेज़ है। मैंने इसके साथ और अधिक करने के लिए अभी तक काफी कुछ हासिल नहीं किया है।
reportlab आज़माएं।
इसके अलावा, Outputting PDFs पर एक गैंडर लें।
संपादित
मैं एक और सोचा था (लेकिन यह मदद नहीं करेगा अगर आप पहले से ही कर रहे हैं पीडीएफ फाइलों है, और मुझे @ thraxil का जवाब बेहतर की तरह)।
इस साल की शुरुआत में मैंने एक परियोजना पर काम किया जहां मैंने निरंतर शिक्षा पाठ्यक्रमों के लिए "पूरा होने के प्रमाण पत्र" उत्पन्न किए। मैंने जिन कोणों को देखा, उनमें से एक सीधे एक उचित स्टाइल वेब पेज से पीडीएफ उत्पन्न करने की कोशिश कर रहा था (कुछ सर्वर-साइड "पीडीएफ पर प्रिंट करें")।
मुझे मिले उपकरण में से एक wkhtmltopdf था। यह एक स्व-निहित वेबकिट ब्राउज़र है जो एक यूआरएल को पीडीएफ में बदल देगा, और बहुत अच्छे नतीजों के साथ।
विचार यह है कि आप जो भी चाहते हैं (छवियों सहित) वाले पृष्ठ को एक साथ रखने के लिए django के टेम्पलेट इंजन का उपयोग करते हैं, इसे wkhtmltopdf पर यूआरएल पास करें, आउटपुट लें और इसे उपयोगकर्ता को वापस कर दें।
मुझे दृष्टिकोण पसंद आया क्योंकि यह लागू करना वास्तव में आसान है (केवल एक पाइप खोलें), आपको स्रोत पीडीएफ फाइलों को सर्वर तक पहुंचने के बारे में चिंता करने की ज़रूरत नहीं है, और आप एचटीएमएल को बदलकर पीडीएफ को फिर से डिजाइन कर सकते हैं।
बड़ी उपयोगिता उल्लेख के लिए +1। यह प्रोग्रामर को एचटीएमएल/सीएसएस में दस्तावेज़ डिजाइन करने में सक्षम बनाता है, और __very__ अच्छी गुणवत्ता वाले पीडीएफ में परिवर्तित करता है। – gorsky
यह कोड सेगमेंट भी देखें जो डीजेंगो में एक पीडीएफ व्यू बनाने के लिए एक तैयार समाधान है जो ऊपर थैक्सिल के समाधान पर बनाता है। Github उपयोगकर्ता zyegfryed के लिए धन्यवाद। `Wkhtmltopdf` -
- 1. मैं django में फ़ील्ड को स्वतः कैसे पॉप्युलेट कर सकता हूं?
- 2. मैं यूआरएल पैरामीटर से एचटीएमएल फॉर्म इनपुट फ़ील्ड को पूर्व-पॉप्युलेट कैसे कर सकता हूं?
- 3. रेल: मैं नाम के लिए स्वतः पूर्ण कैसे कर सकता हूं लेकिन आईडी सहेज सकता हूं?
- 4. मैं व्यक्तिगत पीडीएफ फाइलों को डाउनलोड करने पर एक पीडीएफ में कैसे विलय कर सकता हूं?
- 5. मैं फ़ायरफ़ॉक्स के स्वतः पूर्ण कैसे रोक सकता हूं?
- 6. मैं कैसे निर्धारित कर सकता हूं कि एंड्रॉइड पीडीएफ
- 7. मैं मौजूदा पीडीएफ फ़ाइल में एक पीडीएफ फ़ील्ड में एक छवि कैसे सेट कर सकता हूं?
- 8. मैं पीडीएफएलएटीएक्स से पीडीएफ इंडेक्स कैसे उत्पन्न कर सकता हूं?
- 9. मैं सी # में SQL क्वेरी के परिणामों से कक्षा को कैसे पॉप्युलेट कर सकता हूं?
- 10. मैं एक फॉर्म कैसे रीफ्रेश कर सकता हूं JQuery
- 11. मैं पीडीएफ फाइल से छवियों को कैसे निकाल सकता हूं?
- 12. मैं फॉर्म प्रोग्राम के तर्क कैसे प्राप्त कर सकता हूं?
- 13. पीडीएफ फाइल को पॉप्युलेट करना - पायथन
- 14. क्या मैं सी # में अपने get/set विधियों को स्वतः उत्पन्न कर सकता हूं?
- 15. एआरजीवी को पॉप्युलेट करने के लिए मैं एक स्ट्रिंग पसंद शैल कैसे विभाजित कर सकता हूं?
- 16. पीडीएफ में एक्सएफए फॉर्म फ़ील्ड को पॉप्युलेट करने के लिए iText (iTextSharp) का उपयोग करना?
- 17. मैं क्रॉस-प्लेटफ़ॉर्म सी ++ एप्लिकेशन में पीडीएफ व्यूअर को कैसे एम्बेड कर सकता हूं?
- 18. मैं पीडीएफ फ़ाइल को पृष्ठों में कैसे विभाजित कर सकता हूं (अधिमानतः सी #)
- 19. पर्ल में पीडीएफ 1.5 फाइलों को मैं कैसे पढ़ और छेड़छाड़ कर सकता हूं?
- 20. पीडीएफ फॉर्म को कैसे सत्यापित करें?
- 21. मैं रुबी को जावास्क्रिप्ट में कैसे संकलित कर सकता हूं?
- 22. मैं सूची में एक सूची <string[]> कैसे बना और पॉप्युलेट कर सकता हूं? (सी #)
- 23. यदि पीडीएफ/ए अनुपालन है तो मैं पीडीएफ दस्तावेज का परीक्षण कैसे कर सकता हूं?
- 24. मैं जावा कचरा कलेक्टर को कैसे अक्षम कर सकता हूं?
- 25. मैं अपनी तालिका में कॉलम को स्वतः कैसे बढ़ा सकता हूं?
- 26. मैं रैखिक पीडीएफ फ़ाइल में पेज 1 की सीमा (बाइट्स में) कैसे निर्धारित कर सकता हूं?
- 27. पीडीएफ फॉर्म फील्ड मैनिपुलेशन
- 28. मैं एक अप्रबंधित सी ++ फॉर्म को .NET एप्लिकेशन में कैसे एम्बेड कर सकता हूं?
- 29. मैं अपने जावा सर्वलेट में मल्टीपार्ट/फॉर्म-डेटा POST अनुरोधों को कैसे प्रबंधित कर सकता हूं?
- 30. मैं रेल 3 में लॉगिन फॉर्म कैसे बना सकता हूं?
इस नमूना कोड को आजमाते समय मुझे यह त्रुटि मिलती है: यूनिकोड एन्कोड त्रुटि: 'ascii' कोडेक स्थिति में वर्णों को एन्कोड नहीं कर सकता 10-13: क्रमशः श्रेणी में नहीं (128) – MikeN
utf का उपयोग करके अपनी फ़ाइल लिखने का प्रयास करें: "fdf_file = codecs.open ("data.fdf", "w", "utf-8") "। आपको पहले "कोडेक्स आयात करना होगा"। मुझे विशेष चरित्र एन्कोडिंग के साथ एक समस्या भी मिली जो मैं लेखक को रिपोर्ट करूंगा। –
+1 और अधिक यदि मैं कर सकता था। एफडीएफजेन के लिए धन्यवाद। मैं इसे सीएसवी फ़ाइल से फॉर्मों का एक टन भरने के लिए बैच करने में कामयाब रहा। –