2010-04-06 15 views
8

मैं डेटाबेस से उपयोगकर्ता डेटा के साथ पीडीएफ फॉर्मों को स्वत: भरने के लिए एक वेब इंटरफ़ेस बना रहा हूं। व्यवस्थापक को एक पीडीएफ अपलोड करने में सक्षम होना चाहिए (अभी आईआरएस पीडीएफ फॉर्मों पर लक्षित) और फिर डेटाबेस में डेटा फ़ील्ड के साथ पीडीएफ में फ़ील्ड को संबद्ध करें।पीडीएफ फॉर्म फील्ड मैनिपुलेशन

मुझे डेटाबेस में डेटा फ़ील्ड के साथ व्यवस्थापक नाम फ़ील्ड ("टॉपस्टोरबॉर्फ [0] जैसे पेज। [पेज] [0] .p2-t66 [0]") को जोड़ने में मदद करने के लिए एक तरीका चाहिए। मैं इस जानकारी को किसी भी तरह से प्रोग्रामेटिक रूप से पीडीएफ को संशोधित करने का एक तरीका ढूंढ रहा हूं।

मूल रूप से मैं मूल पीडीएफ के संशोधित संस्करण पर स्पष्ट रूप से फ़ील्ड नाम कैसे दिखा सकता हूं, इस पर सुझावों के लिए खुला हूं। मैंने जो निकटतम प्राप्त किया है वह पीडीएफ में फ़ील्ड में टूलटिप्स को लाइन द्वारा कच्चे पीडीएफ लाइन को संपादित करके सक्षम करने में सक्षम है। हालांकि इस तरह से पीडीएफ को संपादित करते समय फ़ील्ड नाम अस्पष्ट होते हैं, और इसलिए मैं उनका उपयोग नहीं कर सकता।

एक इष्टतम समाधान कुछ भी होगा जो स्वचालित रूप से पीडीएफ को पार्स कर सकता है और प्रत्येक फ़ील्ड के टूलटिप को फील्ड नाम के रूप में सेट कर सकता है। कुछ भी जो कमांड लाइन, या किसी भी पायथन टूल से चलाया जा सकता है, या कच्चे पीडीएफ फ़ाइल से किसी फ़ील्ड के नाम को सही तरीके से पार्स करने के लिए केवल एक मूलभूत आश्चर्यजनक होगा।

+0

यह प्रश्न देखें http://stackoverflow.com/questions/1890570/how-can-i-auto-populate-a-pdf-form-in-django-python – sepulchered

उत्तर

1

इससे भी आसान समाधान हो सकता है, लेकिन आप निश्चित रूप से http://www.reportlab.com/software/opensource/rl-toolkit/'>ReportLab के साथ काम कर सकते हैं।

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

एक बार जब आप निर्धारित किया है 1) क्या क्षेत्रों डेटाबेस से खींचा जा करने की जरूरत है, और 2) जहां वे 'प्रपत्र के भीतर पर जाने वाले फिर ...

इस अनिवार्य है कि तुम क्या हो जाएगा कर:

from reportlab.pdfgen import canvas 

report_string_values = ['Alex',500,500],['Guido',400,400], 
c = canvas.Canvas('hello.pdf') 
c.drawImage(background_image,x_pos,y_pos) # x_pos and w_pos are # pixels from bl origin 
for rsv in report_string_values: 
    c.drawString(rsv.x_pos,rsv.,rsv.text) 
c.showPage() 
c.save() 
0

मैं सवाल गलत व्याख्या की जा सकती है लेकिन मैं अजगर के साथ पीडीएफ पीढ़ी में बहुत अनुभव/वजह से Django है जिस साइट पर मैंने 5 महीने तक काम किया था। मैं texlive का उपयोग करने का सुझाव देंगे। असल में मैंने जो किया वह एक दस्तावेज़ के लिए एक सामान्य पाठ टेम्पलेट बनाया गया था और फिर खेतों को सम्मिलित करने के लिए django templating का उपयोग किया गया था। मैंने टेम्पलेट को प्रस्तुत किया जैसे कि यह render_to_string का उपयोग कर HTML था और फिर इसे pdflatex कमांड का उपयोग करके उत्पन्न किया। मैं pythons subprocess मॉड्यूल और थोड़ा अतिरिक्त का उपयोग कर pdflatex भाग गया। जनरेटिंग करने के लिए मैंने कुछ संशोधनों के साथ इन लोगों को पीडीएफएलएक्स मॉड्यूल http://bit.ly/KaDMBp का उपयोग किया। आपको आवश्यक सभी चीजें pdflatex निर्देशिका के अंदर core.py में हैं।

पूर्व tex दस्तावेज़ (test.tex)) Django templating और render_to_string)

params={input_name:"andrew",input_location:"nyc"} 

tex_doc = render_to_string('test.tex', params) 

पूर्व पीडीएफ के रूप में पैदा करने)

pdflatex = PDFLatex(texfile=tex_path,outputdir=pdf_path) 
pdflatex.transform() 

लेटेक्स है साथ

\begin{document} 

my name is {{input_name}} and i live in {{input_location}}. 

\end{document} 

पूर्व प्रतिपादन टेम्पलेट कुछ हद तक परेशान, कठिन सीखने की वक्र, लेकिन यदि आप उस समय डालते हैं तो आप सीख सकते हैं कि आपको टी की क्या जरूरत है o इन पीडीएफ बनाने के लिए पता है।

उम्मीद है कि इससे मदद मिलती है।

0

एक उपसंहार पार्सर यहाँ रहता है: https://github.com/haxwithaxe/py-ps-parser

मैं इसके साथ खेलने में रूचि किया गया है, लेकिन अभी तक नहीं किया है।

1

यह आपके इच्छित ट्रैक से दूर हो सकता है; लेकिन, यह एक विचार के लायक हो सकता है। मैं Django मॉडल उदाहरणों में स्कैन किए गए संरचित दस्तावेज़ों को पार्स करने पर काम कर रहा हूं। प्री-प्रोसेसिंग और ओसीआर करने के लिए टेस्सेक्ट और अख़बार का उपयोग करके, मुझे 99% से अधिक सटीकता मिलती है। इससे मुझे Levenshtein और re मॉड्यूल के साथ ओसीआर आउटपुट टेक्स्ट को पार्स करने और एक सरल new_instance = MyModel(parsed1, parsed2, ...) करने की सुविधा मिलती है।

ऐसा लगता है कि आप कुछ ऐसा करने की कोशिश कर रहे हैं। http://www.irs.gov/formspubs/ पर फॉर्मों को देखते हुए उनके पास फ़ील्ड के आस-पास पाठ लेबल शेष होते हैं। पीई-टेसेरैक्ट जैसे कुछ का उपयोग करके, आप लेबल को ओसीआर करने में सक्षम होना चाहिए, फॉर्म छवि पर ओसीआर टेक्स्ट ओवरले करें और उपयोगकर्ता को फ़ील्ड लेबल्स को चुनने/संपादित करने की अनुमति दें।

एक अच्छा छोटा उपकरण है, ocrfeederhttps://live.gnome.org/OCRFeeder, जो कि अजगर में लिखा गया है और आपको डेस्कटॉप ऐप में प्रक्रिया कैसे काम करती है, इसके बारे में एक बुनियादी विचार देना चाहिए। सौभाग्य।

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