एक्सेल, वर्ड, TXT और अन्य फ़ाइलों को पीडीएफ में "मैं जैसा देखता हूं" मोड में परिवर्तित करने के लिए एक वेब सेवा कैसे करें

एमएस एक्सेल फॉर्मेट में अकाउंट्स, अकाउंटिंग और फाइनेंशियल डॉक्यूमेंट्स को सेव करने की बेवकूफी की आदत कहां से आई? स्प्रेडशीट प्रारूप में मुद्रण के लिए दस्तावेज़ों को स्टोर और ट्रांसफर क्यों किया जाता है यदि कोई विशेष पीडीएफ प्रारूप है? हालाँकि, सभी लेखांकन कार्यक्रमों में, दस्तावेज़ सबसे पहले आवश्यक रूप से MS Excel में निर्यात किए जाते हैं और उसके बाद ही दस्तावेज़ों को सहेजने के वैकल्पिक तरीके पेश किए जाते हैं। यहां से कार्य उत्पन्न हुआ: एकाउंटेंट को अपने दस्तावेज़ों को सहेजने देना चाहिए, जैसा कि वह चाहता है, लेकिन क्लाइंट को उन्हें पीडीएफ प्रारूप में प्राप्त करना चाहिए और छवि में बिल्कुल सुनिश्चित होना चाहिए कि एमएस एक्सेल टेम्पलेट में एकाउंटेंट ढेर।
एक लेखा कार्यक्रम के रूप में, हमने मुक्त सूर्य का उपयोग किया : बहीखाता पद्धति । (सच में, इस कार्यक्रम से आप तुरंत पीडीएफ को दस्तावेजों को बचा सकते हैं, लेकिन एक बार जब उन्होंने कहा, तो एक्सेल।)
एकाउंटेंट डिस्क पर एक विशिष्ट निर्देशिका के लिए .xls फ़ाइल अपलोड करता है, जहाँ से हमें इसे चुनना होगा, इसे पीडीएफ में रूपांतरित करें और इसे किसी अन्य निर्देशिका में सहेजें। यह सब एक वेब सेवा के रूप में लागू किया जाना चाहिए, अर्थात्, ग्राहक को साइट पर "व्यक्तिगत खाते" में अपने पीडीएफ दस्तावेजों को डाउनलोड करने में सक्षम होना चाहिए।

हल करने के तरीके:

पहली चीज जो मैं करना चाहता था, वह PHP या पर्ल के लिए एक तैयार-किए गए पुस्तकालय को खोजने और सीधे उड़ने पर फ़ाइलों को परिवर्तित करने की थी।
एक्सेल प्रारूप के साथ काम करने के लिए इस तरह के पुस्तकालय वास्तव में पाए गए थे, उदाहरण के लिए: PHPExcel, PHPExcelReader, स्प्रेडशीट :: ParseExcel, आदि।
ये पुस्तकालय वास्तव में अच्छी तरह से काम करते हैं, लेकिन वे वास्तव में वही करते हैं जो उनके लिए डिज़ाइन किया गया है: वे एक एक्सेल स्प्रेडशीट में डेटा की तलाश करते हैं और उन पर काम करते हैं।
लेकिन हमें एक्सेल स्प्रेडशीट को मुद्रण के लिए फॉर्म में लाने के लिए, स्टैम्प और सिग्नेचर के साथ सभी चित्रों के साथ, फॉण्ट फॉरमेट और सेल के साथ कुछ अलग करने की आवश्यकता है।

दूसरा समाधान एक आभासी प्रिंटर है। इसका सार यह है कि हम फ़ाइल को एक उपयुक्त प्रोग्राम में खोलते हैं और इसे प्रिंट करने के लिए भेजते हैं, लेकिन एक असली प्रिंटर पर नहीं, बल्कि एक आभासी के लिए, जो कागज के बजाय एक फ़ाइल में सहेजा जाएगा, पहले ps pscript में, और फिर उससे एक पीडीएफ फाइल बनाएंगे।
चूंकि सिस्टम को वेब सेवा के रूप में भी कार्य करना चाहिए, इसलिए मैंने प्लेटफॉर्म के रूप में अपाचे के साथ लिनक्स को चुना। और एक प्रोग्राम के रूप में जो सभी एमएस ऑफिस फाइलें खोल सकता है - मुक्त OpenOffice.org 3.4

तो हम क्या करें:

ओपनऑफिस स्थापित करें। PyODConverter कनवर्टर इंस्टॉलेशन गाइड OpenOffice.org 2.4 संस्करण को आवश्यक रूप से-हेडलेस स्थापित करने का सुझाव देता है, लेकिन मैंने अभी OpenOffice.org 3.4 को रिपॉजिटरी से स्थापित किया है और सब कुछ काम किया है।
स्थापना के बाद, मैंने प्रोग्राम चलाने की कोशिश की, लेकिन सिस्टम ने इनकार कर दिया, एक और जावा रनटाइम एनवायरनमेंट को चाहा। क्या उसकी जरूरत है? यह पता चला कि नहीं। और OpenOffice को एक वर्चुअल प्रिंटर में फ़ाइल भेजने के लिए पूरी तरह से चलाना पूरी तरह से बेकार है। कार्यक्रम में एक उत्कृष्ट पीडीएफ कनवर्टर है, जो कमांड लाइन से कॉल करना आसान है।

यह निम्नानुसार किया जाता है:



एक पीडीएफ कनवर्टर बनाएँ


उदाहरण के लिए कन्वर्टर नाम के साथ एक बैश फ़ाइल बनाएँ

 <Code>

 <स्रोत लैंग = "बैश">
 #! / बिन / बैश

 # देखें कि OpenOffice.org और PYTHON कहां स्थापित हैं। 
 # सही तरीके से पथ यदि वे आपके सिस्टम पर भिन्न हैं

 OOFFICE = `ls /usr/bin/openoffice.org3 / usr / bin / ooffice / usr / lib / openoffice / program / soffice |  सिर-एन 1`
 OOOPYTHON = `ls /opt /openoffice.org.org/program/python / usr / bin / python |  सिर-एन 1`

 अगर [!  -x "$ OOFFICE"]
 तो
  इको "OpenOffice.org बाइनरी को ऑटो-डिटेक्ट नहीं कर सका"
  निकास
 फाई

 अगर [!  -x "$ OOOPYTHON"]
 तो
  गूंज "OpenOffice.org पायथन को ऑटो-डिटेक्ट नहीं कर सका"
  निकास
 फाई

 इको "ओपन ओपनऑफिस.बाइनरी का पता लगाया: $ OOFFICE"
 इको "ओपनऑफ़िस.ऑन पायथन का पता लगाया: $ OOOPYTHON"

 # संदर्भ: http://wiki.services.openoffice.org/wiki/Using_Python_on_Linux
 # यदि आप OpenOffice.org का उपयोग करते हैं, जो फेडोरा या उबंटू के साथ आता है, तो निम्नलिखित पंक्ति को अनलाइक करें:
 # निर्यात PYTHONPATH = "/ usr / lib / openoffice.org / कार्यक्रम" 

 # यदि आप परीक्षण के लिए अनुकरण करना चाहते हैं कि कोई एक्स सर्वर नहीं है, तो अगली पंक्ति को अनइंस्टॉल करें।
 # आंसू प्रदर्शन

 # किसी भी OpenOffice.org प्रक्रिया को मारें।
 Killall -u `whoami` -q soffice

 # यह एक महत्वपूर्ण पंक्ति है: कार्यक्रम नेटवर्क से एक पायथन स्क्रिप्ट डाउनलोड करने की कोशिश कर रहा है, जो कि बस है 
 # फ़ाइलों को परिवर्तित करने के लिए OpenOffice की आवश्यकता है।  यदि सब ठीक है, तो कनवर्टर को चलाने के बाद 
 # निर्देशिका में DocumentConverter.py नामक एक निर्देशिका दिखाई देगी। 
 # यदि यह काम नहीं करता है, तो DocumentConverter.py फ़ाइल डाउनलोड करें 
 # नीचे दिए गए पते पर मैन्युअल रूप से और इस स्क्रिप्ट के साथ एक ही निर्देशिका में डाल दिया।
 # जांचें कि स्क्रिप्ट में पोर्ट 8100 है
 test -f DocumentConverter.py ||  wget http://www.artofsolve.com/files/DocumentConverter.py

 # OpenOffice.org टीसीपी पोर्ट 8100 पर श्रवण मोड में शुरू करें।
 $ OOFFICE "-accept = सॉकेट, होस्ट = लोकलहोस्ट, पोर्ट = 8100; urp; StarOffice.ServiceManager" -norestore -nofirststartwizard -nologo -headless और

 # शुरू होने के लिए कुछ सेकंड प्रतीक्षा करें।
 5s सो जाओ

 # यहां हम उन फ़ाइलों के नाम सूचीबद्ध करते हैं जिन्हें हम कनवर्ट करना चाहते हैं: 
 # स्रोत फ़ाइल का नाम - हम किस फ़ाइल में कनवर्ट करते हैं। 
 # सबसे सुखद बात यह है कि आप न केवल पीडीएफ में परिवर्तित कर सकते हैं, बल्कि किसी भी प्रारूप में, 
 # OpenOffice.org द्वारा समर्थित है
 # 
 # MS PowerPoint से लेकर फ़्लैश तक
 $ OOOPYTHON DocumentConverter.py sample.ppt sample.swf

 # एक्सेल से पीडीएफ तक
 $ OOOPYTHON DocumentConverter.py sample.xls sample.pdf

 # OpenOffice.org बंद करें।
 Killall -u `whoami` soffice

 # ------------------------------------------------- --- 

 </ स्रोत>
 </ Code>


कनवर्टर चलाने के लिए अनुमतियाँ सेट करें। स्क्रिप्ट (755)
इस स्क्रिप्ट (कनवर्टर.श) के साथ उसी निर्देशिका में नाम के तहत एक्सेल फाइल रखो। कनवर्टर (एस), कन्वर्टर को चलाओ। स्क्रिप्ट और सैंपल। पीडीएफ फाइल निर्देशिका में दिखाई देगी, जो एक्सेल फाइल के मुद्रित रूप की एक प्रति होगी।

आधा किया हुआ। अब हमें एक वेब सेवा के रूप में रूपांतरण प्रक्रिया को व्यवस्थित करने की आवश्यकता है।
आप निश्चित रूप से / cgi-bin / Apache डायरेक्टरी में कन्वर्टर.श फाइल को डाल सकते हैं और इसे तुरंत चला सकते हैं, लेकिन यहां सुरक्षा कार्य शुरू हो जाते हैं। ऐसी सेवा के सुरक्षा मुद्दे को बहुत सावधानी से संपर्क करने की आवश्यकता है, क्योंकि हम अज्ञात फ़ाइलों को स्क्रिप्ट में स्थानांतरित करने जा रहे हैं और इसे अज्ञात में संग्रहीत करने की अनुमति देते हैं।
सही दृष्टिकोण DOCUMENT_ROOT अपाचे के ऊपर कनवर्टर.श फ़ाइल को रखना है, और इसे एक मध्यस्थ स्क्रिप्ट के माध्यम से एक्सेस करना है, उदाहरण के लिए, पर्ल पर, जो / cgi-bin / निर्देशिका में झूठ होगा और ध्यान से कनवर्टर के पास दिए गए सभी मापदंडों की जांच करेगा।

रूपांतरण सेवा के कार्यान्वयन के बाद क्या समस्याएं पाई गईं।
यह पता चला कि लिनक्स विंडोज़ -1251 द्वारा एन्कोड किए गए रूसी पत्रों में नामों के साथ फाइलों को नहीं समझता है। यहाँ क्या किया जा सकता है:
1. लैटिन नाम (मुश्किल) के साथ फाइल को बचाने के लिए एकाउंटेंट को राजी करें
2. निर्देशिका में लोड करते समय फ़ाइल नाम को utf-8 में बदलें (काफी वास्तविक)
3. विंडोज के तहत एक समान सेवा को लागू करने के लिए - अपाचे (मैं कोशिश करूंगा)

विंडोज के तहत, कनवर्टर को लागू करना भी आसान था

मुझे यह पसंद आया:
1. लिब्रे ऑफिस 3.4 डाउनलोड और इंस्टॉल करें
2. डाउनलोड किए गए PyODConverter
3. काम निर्देशिका में DocumentConverter.py फ़ाइल सहेजा गया, उदाहरण के लिए, C: \ test \
4. मैंने दस्तावेज़ DEONULT_OPENOFFICE_PORT = 8100 को DocumentConverter.py फ़ाइल में बदल दिया (डिफ़ॉल्ट रूप से, एक अलग पोर्ट वहां निर्दिष्ट किया गया था)
5. रूपांतरण के लिए निर्देशिका C: \ test \ test फ़ाइल में रखें - test.xls

अब हम रूपांतरण प्रक्रिया शुरू करते हैं।
सबसे पहले, OpenOffice को स्टील्थ मोड में चलाएं। कमांड लाइन (cmd) में हम लिखते हैं:

"C:\Program Files\LibreOffice.org 3.4\program\soffice.exe" -headless -nologo -norestore -accept=socket,host=localhost,port=8100;urp;StarOffice.ServiceManager

यहां यह महत्वपूर्ण है कि पोर्ट DEFAULT_OPENOFFICE_PORT से मेल खाता है

अब रूपांतरण शुरू करें:
"C:\Program Files\LibreOffice.org 3.4\program\python" c:\test\DocumentConverter.py c:\test\test.xls c:\test\test.pdf

और c: \ test \ निर्देशिका में हम कनवर्ट की गई PDF फ़ाइल ढूंढते हैं।

तो, xls, doc, docx, rtf, txt, odt, ott, sxw, stw, html, xml फ़ाइल कनवर्टर तैयार है, सामान्य तौर पर, वह सब कुछ जो OpenOffice खुलेगा।

Source: https://habr.com/ru/post/In148800/


All Articles