रूबी
उत्तर
जैसा कि देखा गया है, रूबी में ओपन एक्सएमएल दस्तावेज़ों में हेरफेर करने के लिए कोई पुस्तकालय नहीं दिखता है, लेकिन OpenXML Developer में ओपन एक्सएमएल दस्तावेज़ों के प्रारूप पर पूर्ण दस्तावेज है।
यदि आप चाहते हैं कि प्रत्येक उपयोगकर्ता के लिए एक मानक दस्तावेज़ (एक फॉर्म लेटर) की एक प्रतिलिपि भेजना है, तो यह काफी सरल होना चाहिए कि एक डॉक्स एक ज़िप फ़ाइल है जिसमें निर्देशिका पदानुक्रम में विभिन्न भाग होते हैं। एक DOCX "टेम्पलेट" है जिसमें सभी भागों और पेड़ संरचना शामिल हैं जिन्हें आप all
उपयोगकर्ताओं (बिना वास्तविक सामग्री के) भेजना चाहते हैं, फिर बस नए (या मौजूदा संशोधित) टुकड़े बनाएं जिनमें उपयोगकर्ता-विशिष्ट सामग्री हो और इंजेक्ट करें इसे उपयोगकर्ता को भेजने से पहले ज़िप (DOCX फ़ाइल) में।
उदाहरण के लिए: आपके पास document-template.xml
हो सकता है जिसमें प्रिय [USER-PLACEHOLDER]: शामिल हैं। एक उपयोगकर्ता दस्तावेज़ अनुरोध करता है, तो आप उपयोगकर्ता के नाम के साथ [USER-PLACEHOLDER]
की जगह है, तो your-template.docx
ज़िप फ़ाइल के लिए जिसके परिणामस्वरूप document.xml
जोड़ने (जो सभी छवियों और अन्य भागों आप वर्ड दस्तावेज़ में चाहते होते हैं) और उपयोगकर्ता के लिए कि जिसके परिणामस्वरूप दस्तावेज़ भेज ।
ध्यान दें कि यह मामूली बात है अंदर संरचना और भागों के प्रारूप का पता लगाने के लिए यदि आप .zip
करने के लिए एक .docx
फ़ाइल का नाम बदलें। आप कोड या कोड के साथ किसी भी ज़िप मैनिपुलेशन टूल या प्रोग्रामेटिक रूप से छवियों या अन्य हिस्सों को आसानी से हटा या प्रतिस्थापित कर सकते हैं।
कच्चे एक्सएमएल से पूरी तरह से कस्टम सामग्री के साथ एक नया Word दस्तावेज़ जनरेट कर रहा है काम आसान बनाने के लिए एक एपीआई के उपयोग के बिना बहुत मुश्किल होगा। यदि आपको वास्तव में ऐसा करने की आवश्यकता है, तो आप Mono इंस्टॉल करने पर विचार कर सकते हैं, फिर Open XML Format SDK 1.0 का उपयोग करके अपने ओपन एक्सएमएल दस्तावेज़ बनाने के लिए VB.NET, C# या IronRuby का उपयोग करें। चूंकि आप ओपन एक्सएमएल दस्तावेज़ों में हेरफेर करने के लिए Microsoft.Office.DocumentFormat.OpenXml.Packaging Namespace का उपयोग कर रहे हैं, इसलिए इसे मोनो में ठीक काम करना चाहिए, जो एसडीके की आवश्यकता के सब कुछ का समर्थन करता है।
मैं जानता हूँ कि अगर आप .doc विस्तार के साथ एक शब्द दस्तावेज़ के रूप में एक HTML दस्तावेज़ की सेवा, यह वचन ठीक में खुलेगा। बस कुछ भी कल्पना मत करो।
संपादित करें: यहां क्लासिक एएसपी का उपयोग करने का एक उदाहरण है। http://www.aspdev.org/asp/asp-export-word/
आप Windows पर चला रहे हैं, जाहिर है, यह WIN32OLE की बात और वर्ड COM ऑब्जेक्ट के साथ कुछ दर्द है।
संभावना है कि आपकी * * निक्स पर्यावरण से सेवा हो रही है। वर्ड 2007 "Microsoft Office Open XML" प्रारूप (* .docx) का उपयोग करता है जिसे उपयुक्त compatibility pack from Microsoft का उपयोग करके खोला जा सकता है।
अधिक हाल ही में कार्यालय क्षुधा (2002/XP और 2003 में कम से कम) के कुछ their own XML formats जो भी useable हो सकता था।
मुझे प्रक्रिया को आसान बनाने के लिए किसी भी रूबी टूल से अवगत नहीं है, दुख की बात है।
यह स्वीकार्य बनाया जा सकता है, तो मुझे लगता है कि मैं नाम दिया-html फ़ाइल मार्ग नीचे जाना करने के लिए इच्छुक हो जाएगा। मैंने वर्डएक्सपी से एचटीएमएल के रूप में एक दस्तावेज़ को सहेजा, इसे एक .doc में बदल दिया और बिना किसी समस्या के इसे खोला।
नामित-एचटीएमएल फ़ाइल मार्ग जैसा कि आप वर्णन करते हैं, यह मेरे मामले के लिए काम नहीं करेगा। मैं एक ऑफिस वर्ड एप्लिकेशन में एचटीएमएल फाइलों को पूर्व-निर्माण नहीं कर सकता और इसे .doc पर पुनर्नामित नहीं कर सकता और यदि मैं अपने सर्वर पर सादे एचटीएमएल फाइलों के साथ ऐसा करता हूं तो उन्हें आईई द्वारा डॉक्टर-फाइल के रूप में पहचाना नहीं जाता है। – Javier
मैं Win32OLE का प्रशंसक नहीं हूं क्योंकि यह फ़ाइल में हेरफेर करने के लिए शब्द इंजन का उपयोग करता है। –
आप Apache POI का उपयोग कर सकते हैं। यह जावा में लिखा गया है, लेकिन integrates with Ruby as an extension
आपके इनपुट के लिए धन्यवाद! क्या आप किसी कार्यान्वयन के बारे में जानते हैं जहां वास्तव में एक शब्द दस्तावेज़ बनाने के लिए अपाचे पीओआई का उपयोग किया गया था (न केवल इसे पार्स करें)? – Javier
क्षमा करें, मुझे इसके अलावा इसके बारे में बहुत कुछ पता नहीं है। एक बार मैं 'create_and_save का उपयोग – ykaganovich
docx4j (अपने प्रोजेक्ट) docx फ़ाइलों के साथ काम करना पर केंद्रित है, तुम मेरी जिंदगी इस रत्न @Nick बनाने के लिए ... – JasonPlutext
ग्रांट के उत्तर के आगे, आप वर्ड को "फ़्लैट ओपीसी" फ़ाइल भी भेज सकते हैं, जो अनिवार्य रूप से डॉक्स को अनजिप किया गया है और एक एक्सएमएल फ़ाइल बनाने के लिए संयोजित है। इस तरह, आप एक फ़ाइल में जगह ले सकता है [USER-PLACEHOLDER] और इसके साथ किया जाना (यानी कोई ज़िप करना या unzipping)।
यदि कोई भी इसे देख रहा है, तो यह पोस्ट बताता है कि XML डेटा स्रोत का उपयोग कैसे करें। यह मेरे लिए अच्छी तरह से काम करता है।
http://seroter.wordpress.com/2009/12/23/populating-word-2007-templates-through-open-xml/
मैं एक ही समस्या का सामना करना पड़ा। दुर्भाग्य से मैं एक्सएमएल में हेरफेर नहीं कर सका क्योंकि मेरे ग्राहकों चाहिए खुद को टेम्पलेट्स में भरने के लिए। और ऐसा करने के लिए हमेशा संभव नहीं है (उदाहरण के लिए, मैक के लिए कार्यालय इस अनुमति नहीं देता है)।
इस समस्या का समाधान के रूप में, मैं एक साधारण मणि, जो एम्बेडेड माणिक के साथ एक rtf दस्तावेज़ टेम्पलेट के रूप में इस्तेमाल किया जा सकता था: https://github.com/eicca/rtf-templater
मैं इसे परीक्षण किया है और यह रिपोर्ट और दस्तावेजों को भरने के लिए ठीक काम करता है। हालांकि, जटिल लूप और शर्तों के लिए बुरी तरह प्रदर्शित करता है। बाहर इस GitHub रेपो
की जांच: https://github.com/jawspeak/ruby-docx-templater
यह आप एक शब्द टेम्पलेट से कोई दस्तावेज़ बनाने के लिए अनुमति देता है।
यह एक तरीका है डॉसी (doccyapp.com) में एक एपीआई है जो आप उपयोग कर सकते हैं। डॉक्स, ओडीटी और पेजों का समर्थन करता है और यदि आप
ग्रांट वैगनर द्वारा सुझाए गए तकनीक के समान ही तकनीक का उपयोग करते हुए मैंने शब्द रत्न के लिए रूबी एचटीएमएल बनाया है जो आपको आसानी से वर्ड डॉक्स फाइलों को आउटपुट करने की अनुमति दे सकता है आपका रूबी ऐप आप http://github.com/nickfrandsen/htmltoword पर यह भी देख सकते हैं - बस यह एक एचटीएमएल स्ट्रिंग गुजरती हैं और यह एक इसी शब्द docx फ़ाइल पैदा करेगा।
def show
respond_to do |format|
format.docx do
file = Htmltoword::Document.create params[:docx_html_source], "file_name.docx"
send_file file.path, :disposition => "attachment"
end
end
end
आशा है कि आपको यह उपयोगी लगेगा। यदि आपको इसके साथ कोई समस्या है तो एक गिथब मुद्दा खोलने के लिए स्वतंत्र महसूस करें।
बहुत धन्यवाद (हालांकि यह उन लोगों के रूप में अच्छी तरह से संभालती है, के रूप में xlsx के खिलाफ) – VKatz
बचाया 'विधि यह ज़िपित फ़ाइल में दिए गए पथ पर बचाया लेकिन खोजने में असमर्थ' .docx 'प्रारूप फ़ाइल सलाह ..Please !!! – VKatz
क्या यह मणि आपको पृष्ठ अभिविन्यास को नियंत्रित करने की अनुमति देता है? –
प्रकटीकरण: मैं docxtemplater परियोजना के नेता हूँ।
मुझे पता है कि आप एक रूबी समाधान की तलाश में हैं, लेकिन क्योंकि अन्य सभी समाधान केवल आपको बताते हैं कि वैश्विक स्तर पर इसे कैसे करें, आपको एक लाइब्रेरी देने के बिना जो आप चाहते हैं, यहां जेएस या नोडजेएस (दोनों में काम करता है)
तुम भी कमांडलाइन में इसका इस्तेमाल कर सकते हैं:
npm install docxtemplater -g
docxtemplater <configFile>
----config.docxFile: The input file in docx format
----config.outputFile: The outputfile of the document
रूबी प्रश्न के लिए जेएस उदाहरण देकर बुरा स्वाद है। –
वहाँ भी एक कमांड लाइन इंटरफेस है, तो हो सकता है इस परियोजनाओं के लिए उपयोगी Node.js – edi9999
यह एक पुराना सवाल है लेकिन एक नया जवाब है। यदि आप एक वर्ड (docx) दस्तावेज़ में एक HTML दस्तावेज़ चालू करना चाहते हैं, तो बस 'htmltoword' मणि का उपयोग करें:
https://github.com/nickfrandsen/htmltoword
मुझे यकीन है कि यही कारण है कि इस सवाल का जवाब क्रीप था और हर कोई templating पोस्टिंग शुरू कर दिया नहीं कर रहा हूँ समाधान, लेकिन यह ओपी के सवाल का जवाब देता है।पीडीएफ के बजाय शब्द को छोड़कर, प्रोन की तरह।
अद्यतन:
वहाँ भी है pandoc और pandoc के लिए एक API आवरण docverter कहा जाता है। पैंडोक एक हैकेल लाइब्रेरी है क्योंकि दोनों के पास थोड़ा जटिल इंस्टॉल है।
का उपयोग नहीं कर रहा 'इस्तेमाल किया htmltoword' और यह सिफारिश नहीं कर सकते हैं हो सकता है। यह केवल पैराग्राफ और हेडर को संभाल सकता है। यदि आप अपने रूबी ऐप में शक्तिशाली दस्तावेज़ रूपांतरण चाहते हैं, तो मैं पांडोक का सुझाव देता हूं, हालांकि डॉकवर्टर या पैंडोक-रूबी जैसे रूबी रैपर। पीडीएफ रूपांतरण के लिए लाटेक्स पुस्तकालयों की आवश्यकता होती है - यह लगभग 2 जीबी पुस्तकालय है। निष्पक्ष चेतावनी :) – Archonic
शायद यह मणि आपके लिए दिलचस्प है।
https://github.com/trade-informatics/caracal/
यह झींगा की तरह लेकिन docx साथ।
मैंने कुछ जटिल डॉक्क्स टेम्पलेट्स को स्लाइस करने और स्लाइस का उपयोग करके एक कस्टम दस्तावेज़ बनाने के लिए एक छोटी उपयोगिता लिखी है: http://github.com/bagilevi/docx_builder – Leventix
अभी भी इस विधि का उपयोग करके एक टेबल लूप के चारों ओर अपने सिर को पाने का प्रयास कर रहा है –
मैंने टेम्पलेट से docx फ़ाइल उत्पन्न करने के लिए एक और विकल्प जोड़ा है https://github.com/jawspeak/ruby-docx-templater यह ज़िप्बर्बी का उपयोग करता है और स्मृति में प्रक्रिया करता है। (वास्तव में यह एक फोर्क संस्करण का उपयोग करता है जो रूबीज़िप के ज़िप :: मॉड्यूल से टकरा नहीं है)। – JAWspeak