2010-04-26 26 views
6

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

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

मुझे यह भी एहसास है कि मैं केवल दस्तावेज़ को स्कैन कर सकता हूं और परिणामस्वरूप रास्टर छवि को पृष्ठभूमि के रूप में उपयोग कर सकता हूं, लेकिन मैं वेक्टर ग्राफिक्स की सटीकता को प्राथमिकता दूंगा।

ऐसा लगता है कि ReportLab has a commercial product with this functionality, और विशिष्ट फ़ंक्शन जो मैं ढूंढ रहा हूं वह इसमें है (प्रति पृष्ठ) - लेकिन ऐसा लगता है कि एक गैर-लाभकारी उपयोग के लिए एक एकल, सरल फ़ंक्शन के लिए 4 आकृति उत्पाद के लिए भुगतान करने के लिए ओवरकिल की तरह लगता है।

उत्तर

5

यदि पीडीएफ फॉर्म वास्तविक हैं AcroForms आप उन्हें भरने के लिए iText का उपयोग कर सकते हैं। मुझे नहीं पता कि iText (जावा, मूल) और iTextSharp (सी #) से अन्य बंदरगाह है, लेकिन यदि आप अपने समाधान को खोलने के लिए कोई फर्क नहीं पड़ता है तो इसका उपयोग करना आसान और निःशुल्क है। आप इस sample code या (जावा स्निपेट) पर एक नज़र ले जा सकते हैं:

String formFile = "/path/to/myform.pdf" 
String newFile = "/path/to/output.pdf" 
PdfReader reader = new PdfReader(formFile); 
FileOutputStream outStream = new FileOutputStream(newFile); 
PdfStamper stamper = new PdfStamper(reader, outStream); 
AcroFields fields = stamper.getAcroFields(); 

// fill the form 
fields.setField("name", "Shane"); 
fields.setField("url", "http://stackoverflow.com"); 

// PDF infos 
HashMap<String, String> infoDoc = new HashMap<String, String>(); 
infoDoc.put("Title", "your title here"); 
infoDoc.put("Author", "JRE ;)"); 
stamper.setMoreInfo(infoDoc); 

// Flatten the PDF & cleanup 
stamper.setFormFlattening(true); 
stamper.close(); 
reader.close(); 
outStream.close(); 
0

ऐसा लगता है कि तुम सिर्फ एक Reportlab पीडीएफ है कि आप पैदा कर रहे हैं की पृष्ठभूमि में एक मौजूदा पीडीएफ डालना होगा। मुफ्त PDFRW लाइब्रेरी आसानी से ऐसा कर सकती है। इस तकनीक के कुछ विशिष्ट उदाहरणों के लिए Example Tools page पर एक नज़र डालें।

2

यदि आप केवल पूर्व-मुद्रित पेपर पर कुछ ग्रंथ जोड़ना चाहते हैं। आप इसे jpg के रूप में स्कैन कर सकते हैं, फिर पृष्ठभूमि के रूप में यह jpg डालें। कृपया रिपोर्टबैब मैनुअल पर 15 वें पेज का संदर्भ लें, बस ड्रॉ इमेज

पर कॉल करें
संबंधित मुद्दे