मैं एक ODT फाइल को एक पीडीएफ में कैसे बदल सकता हूं?


61

क्या किसी को पता है कि एक ODTफ़ाइल (लिब्रे ऑफिस) को कैसे बदलना है PDF?


3
संबंधित (लेकिन एक डुप्लिकेट नहीं !): पीडीएफ फाइल को ओर्ट फाइल में कैसे बदलें?
एलियाह कगन

जवाबों:


68

बस लिबर ऑफिस के साथ दस्तावेज़ खोलें और PDF के रूप में निर्यात चुनें ... :

यहाँ छवि विवरण दर्ज करें

कमांड लाइन सॉल्यूशन के लिए वहाँ unoconv NAME इंस्टॉल करें है जो कमांड लाइन से फाइलों को परिवर्तित करता है:

unoconv -f pdf mydocument.odt

नोट: केवल उबुन्टु ११.१० unoconv से शुरू होना लिब्रे ऑफिस पर निर्भर करता है। पिछले unoconv संस्करण (Ubuntu <= 11.04 से) ओपन ऑफिस पर निर्भर करते हैं (लेकिन यह लिब्रे ऑफिस के साथ भी चलेगा)।


3
उल्लेख के लिए thx unoconv, यह बहुत अच्छा है!
बोरिस डेपेन

1
Unoconv बनाम Libreoffice कमांड लाइन के पेशेवरों और विपक्षों के बारे में सोच रहे लोगों के लिए, यह समस्या मदद कर सकती है: github.com/dagwieers/unoconv/issues/364
सेबस्टियन लॉर्बर

@Takkat unoconv को MacOS Sierra पर libreoffice5 स्थान नहीं लगता है, यह कहता है unoconv: Cannot find a suitable office installation on your system., इसलिए यह अनुपयोगी है :(
SebMa

87

आप libreofficeअपने उद्देश्य के लिए कमांड-लाइन का भी उपयोग कर सकते हैं । यह आपको बैच रूपांतरण का लाभ देता है। लेकिन सिंगल फाइल भी संभव है। यह उदाहरण वर्तमान निर्देशिका की सभी ODT फ़ाइलों को PDF में रूपांतरित करता है:

libreoffice --headless --convert-to pdf *.odt

के साथ कमांड लाइन विकल्पों पर अधिक जानकारी प्राप्त करें:

man libreoffice

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

4
Thi9s काम करता है, लेकिन इसमें एक समस्या है: यदि GUI खुला है तो कमांड कुछ भी नहीं करेगा (एक त्रुटि भी नहीं दिखाता है)। बदसूरत, लेकिन इस समाधान के साथ आप एक नया उदाहरण खोल सकते हैं --env:UserInstallation=file:///path/to/some/directory:।
टोकन

1
@ टॉकलैंड: इसके लिए एक बग रिपोर्ट है: bugs.freedesktop.org/show_bug.cgi?id=37531
मैकेनिकल घोंघा

1
मैं बैच रूपांतरण को भी प्राप्त करने में सफल रहा unoconv। उदाहरण के लिए मैंने लाइन का unoconv -f pdf *.pptसफलतापूर्वक उपयोग किया ।
XavierStuvw

2
Unoconv बनाम Libreoffice कमांड लाइन के पेशेवरों और विपक्षों के बारे में सोच रहे लोगों के लिए, यह मुद्दा मदद कर सकता है: github.com/dagwieers/unoconv/issues/364
सेबस्टियन लॉबर

8

"गैर-जीयूआई" विधि के बारे में कुछ और विवरण यहां दिए गए हैं।

  1. आप इस विधि का उपयोग न केवल ओडीटी फाइलों को पीडीएफ में बदलने के लिए कर सकते हैं। यह MS Word DOCX फ़ाइलों के लिए भी काम करेगा (यह काम करेगा साथ ही लिबरऑफिस विशेष ODT को संभालने में सक्षम है), और, सामान्य रूप से सभी फ़ाइल प्रकारों में जो लिब्रे ऑफिस खोल सकते हैं।

  2. मुझे नहीं लगता कि एक बाइनरी है जिसका नाम libreofficeसुझाए गए अन्य उत्तरों में से एक है। हालांकि, वहाँ है soffice(.bin)- बाइनरी जिसका उपयोग कमांड लाइन से लिबर ऑफिस शुरू करने के लिए किया जा सकता है। यह आमतौर पर में स्थित है /usr/lib/libreoffice/program/; और बहुत बार, एक सिमिलिंक /usr/bin/sofficeउस स्थान की ओर इशारा करता है।

  3. फिर, ज्यादातर मामलों में पैरामीटर --headless --convert-to pdfपर्याप्त नहीं हैं। यह होना चाहिए:

    --headless --convert-to pdf:writer_pdf_Export
    

    वास्तव में इस पूंजीकरण का पालन करना सुनिश्चित करें!

  4. अगला, यदि आपके सिस्टम पर पहले से लिब्रेऑफिस जीयूआई उदाहरण है और चल रहा है तो कमांड काम नहीं करेगा। यह बग # 37531 के कारण होता है , जिसे 2011 से जाना जाता है । इस अतिरिक्त पैरामीटर को अपनी कमांड में जोड़ें:

     "-env:UserInstallation=file:///tmp/LibreOffice_Conversion_${USER}"
    

    यह एक नया, अलग वातावरण बनाएगा, जिसका उपयोग एक दूसरे, हेडलेस LO उदाहरण द्वारा किया जा सकता है, जो संभवतः एक ही उपयोगकर्ता द्वारा शुरू किए गए संभवतः पहले GUI LO उदाहरण के साथ हस्तक्षेप किए बिना हो सकता है।

  5. इसके अलावा, सुनिश्चित करें कि --outdir /pdfआप निर्दिष्ट करते हैं कि मौजूद है, और यह कि आपके पास इसकी अनुमति है। या, एक अलग आउटपुट डायर का उपयोग करें। भले ही यह पहले परीक्षण और डिबगिंग राउंड के लिए ही हो:

    $ mkdir ${HOME}/lo_pdfs
    
  6. अत:

    /path/to/soffice                                                     \
      --headless                                                         \
      "-env:UserInstallation=file:///tmp/LibreOffice_Conversion_${USER}" \
      --convert-to pdf:writer_pdf_Export                                 \
      --outdir ${HOME}/lo_pdfs                                           \
    /path/to/test.docx
    

    यह मेरे लिए Mac OS X Yosemite 10.10.5 पर LibreOffice v5.1.2.2 के साथ काम करता है (बाइनरी के लिए मेरे विशिष्ट पथ का उपयोग करके sofficeजो वैसे भी उबंटू पर अलग होगा ...)। यह डेबियन जेसी 8.0 (पथ का उपयोग /usr/lib/libreoffice/program/soffice) पर भी काम करता है । क्षमा करें, इसे अभी उबंटू पर परीक्षण नहीं किया जा सकता है ...।

    यदि यह सब काम नहीं करता है, जब आप DOCX को संसाधित करने का प्रयास करते हैं:

  7. यह उस विशिष्ट DOCX फ़ाइल के साथ एक समस्या हो सकती है जिसे आप कमांड के साथ आज़माते हैं ... इसलिए पहले स्वयं का एक बहुत ही सरल DOCX दस्तावेज़ बनाएँ। इसके लिए खुद लिबरऑफिस का इस्तेमाल करें। "हैलो वर्ल्ड!" अन्यथा खाली पृष्ठ पर। इसे DOCX के रूप में सहेजें।

  8. पुनः प्रयास करें। क्या यह सरल DOCX के साथ काम करता है?

  9. यदि यह फिर से काम नहीं करता है, तो चरण 7 को दोहराएं, लेकिन इस बार ODT के रूप में सहेजें।

  10. चरण 8 को दोहराएं, लेकिन इस बार ODT का संदर्भ लेना सुनिश्चित करें।

  11. अंतिम: पैरामीटर के साथ प्रत्येक को soffice, soffice.binकरने libreofficeऔर चलाने के लिए पूर्ण पथ का उपयोग करें -h:

    $ /path/to/libreoffice -h  # if that path exists, which I doubt!
    $ /path/to/soffice -h
    $ /path/to/soffice.bin -h
    
    • क्या आपको यहां आउटपुट मिलता है?
    • तीन बायनेरिज़ / सिमिलिंक में से किसके लिए?
    • आउटपुट रिकॉर्ड करें।
    • हमें अपने आउटपुट बताओ !!!
       

    आपकी उपयोग की गई कमांड लाइन से उनकी तुलना करें:

    • क्या पैरामीटर के नाम, पूंजीकरण, उपयोग किए गए डैश की संख्या, आदि में कोई परिवर्तन हैं?
       

    तुलना के लिए, मेरा अपना (मैक ओएस एक्स) आउटपुट यहाँ है:

     $ /Applications/LibreOffice.app/Contents/MacOS/soffice -h 
    
     LibreOffice 5.1.2.2 d3bf12ecb743fc0d20e0be0c58ca359301eb705f
    
     Usage: soffice [options] [documents...]
    
     Options:
     --minimized    keep startup bitmap minimized.
     --invisible    no startup screen, no default document and no UI.
     --norestore    suppress restart/restore after fatal errors.
     --quickstart   starts the quickstart service
     --nologo       don't show startup screen.
     --nolockcheck  don't check for remote instances using the installation
     --nodefault    don't start with an empty document
     --headless     like invisible but no user interaction at all.
     --help/-h/-?   show this message and exit.
     --version      display the version information.
     --writer       create new text document.
     --calc         create new spreadsheet document.
     --draw         create new drawing.
     --impress      create new presentation.
     --base         create new database.
     --math         create new formula.
     --global       create new global document.
     --web          create new HTML document.
     -o             open documents regardless whether they are templates or not.
     -n             always open documents as new files (use as template).
    
     --display <display>
           Specify X-Display to use in Unix/X11 versions.
     -p <documents...>
           print the specified documents on the default printer.
     --pt <printer> <documents...>
           print the specified documents on the specified printer.
     --view <documents...>
           open the specified documents in viewer-(readonly-)mode.
     --show <presentation>
           open the specified presentation and start it immediately
     --accept=<accept-string>
           Specify an UNO connect-string to create an UNO acceptor through which
           other programs can connect to access the API
     --unaccept=<accept-string>
           Close an acceptor that was created with --accept=<accept-string>
           Use --unnaccept=all to close all open acceptors
     --infilter=<filter>[:filter_options]
           Force an input filter type if possible
           Eg. --infilter="Calc Office Open XML"
               --infilter="Text (encoded):UTF8,LF,,,"
     --convert-to output_file_extension[:output_filter_name[:output_filter_options]] [--outdir output_dir] files
           Batch convert files (implies --headless).
           If --outdir is not specified then current working dir is used as output_dir.
           Eg. --convert-to pdf *.doc
               --convert-to pdf:writer_pdf_Export --outdir /home/user *.doc
               --convert-to "html:XHTML Writer File:UTF8" *.doc
               --convert-to "txt:Text (encoded):UTF8" *.doc
     --print-to-file [-printer-name printer_name] [--outdir output_dir] files
           Batch print files to file.
           If --outdir is not specified then current working dir is used as output_dir.
           Eg. --print-to-file *.doc
               --print-to-file --printer-name nasty_lowres_printer --outdir /home/user *.doc
     --cat files
           Dump text content of the files to console
           Eg. --cat *.odt
     --pidfile=file
           Store soffice.bin pid to file.
     -env:<VAR>[=<VALUE>]
           Set a bootstrap variable.
           Eg. -env:UserInstallation=file:///tmp/test to set a non-default user profile path.
    
     Remaining arguments will be treated as filenames or URLs of documents to open.
    
  12. sofficeअपनी DOCX फाइल को खोलने पर इनपुट फ़िल्टर के अनुप्रयोग को लागू करने के लिए अपनी कमांड लाइन में एक और तर्क जोड़ें :

    --infilter="Microsoft Word 2007/2010/2013 XML"
    

    या

    --infilter="Microsoft Word 2007/2010/2013 XML"
    --infilter="Microsoft Word 2007-2013 XML"
    --infilter="Microsoft Word 2007-2013 XML Template"
    --infilter="Microsoft Word 95 Template"
    --infilter="MS Word 95 Vorlage"
    --infilter="Microsoft Word 97/2000/XP Template"
    --infilter="MS Word 97 Vorlage"
    --infilter="Microsoft Word 2003 XML"
    --infilter="MS Word 2003 XML"
    --infilter="Microsoft Word 2007 XML Template"
    --infilter="MS Word 2007 XML Template"
    --infilter="Microsoft Word 6.0"
    --infilter="MS WinWord 6.0"
    --infilter="Microsoft Word 95"
    --infilter="MS Word 95"
    --infilter="Microsoft Word 97/2000/XP"
    --infilter="MS Word 97"
    --infilter="Microsoft Word 2007 XML"
    --infilter="MS Word 2007 XML"
    --infilter="Microsoft WinWord 5"
    --infilter="MS WinWord 5"
    

fwiw, tdf bug 37531 को हल / निर्धारित किया गया है
myrdd

4

नॉटिलस स्क्रिप्ट

यह स्क्रिप्ट लिबरऑफिस का उपयोग लिबर ऑफिस के साथ संगत फाइलों को पीडीएफ में बदलने के लिए करती है।

#!/bin/bash
## PDFconvert 0.1
## by Glutanimate (https://askubuntu.com/users/81372/)
## License: GPL 3.0
## depends on python, libreoffice
## Note: if you are using a non-default LO version (e.g. because you installed it 
## from a precompiled package instead of the official repos) you might have to change
## 'libreoffice' according to the version you're using, e.g. 'libreoffice3.6'

# Get work directory
base="`python -c 'import gio,sys; print(gio.File(sys.argv[1]).get_path())' $NAUTILUS_SCRIPT_CURRENT_URI`"

#Convert documents
while [ $# -gt 0 ]; do
    document=$1
    libreoffice --headless --invisible --convert-to pdf --outdir "$base" "$document" 
    shift

done

स्थापना निर्देशों के लिए यहां देखें: मैं Nautilus स्क्रिप्ट कैसे स्थापित कर सकता हूं?


2
मैं बस आशा करता हूं कि "लिपरेऑफ़िस" के रूप में ऐसा कार्य ओएसएक्स में भी होगा। कभी-कभी, मुझे अपने हाथों को तब छोटा महसूस होता है जब मुझे मैक का उपयोग करना होता है।
लियो लेपोल्ड हर्ट्ज़ '

2

नोट: मैंने इस प्रश्न से अपने उत्तर को हटाने और इसके संशोधित संस्करण को यहाँ पोस्ट करने का निर्णय लिया, जब मुझे महसूस हुआ कि unoconvयह pswफाइलों से बिल्कुल नहीं निपटता है , और इन्हें अन्य प्रारूपों में सफलतापूर्वक परिवर्तित नहीं करता है। प्रारूप docxऔर xlsxप्रारूप के साथ समस्याएँ भी हो सकती हैं ।


हालाँकि, Libreofficeपूरी तरह से कई फ़ाइल प्रकारों का समर्थन करता है; पूर्ण प्रलेखन आधिकारिक साइट पर उपलब्ध है, जो वैध इनपुट और आउटपुट प्रारूपों का विवरण देता है।

आप कमांड-लाइन libreofficeकन्वर्ट उपयोगिता या नारियल का उपयोग कर सकते हैं , जो रिपॉजिटरी में उपलब्ध है। मुझे unoconvबहुत उपयोगी लगता है, और यह शायद आप क्या चाहते हैं। भले ही तक्कत ने संक्षेप में उल्लेख किया है unoconv, मैंने सोचा कि यह कुछ और विवरण और एक बैच रूपांतरण एक-लाइनर देने के लिए उपयोगी होगा।

टर्मिनल का उपयोग करके आप cdअपनी फ़ाइलों से युक्त निर्देशिका का उपयोग कर सकते हैं और फिर बैच इस तरह से एक-लाइनर चलाकर सभी को परिवर्तित कर सकते हैं:

for f in *.odt; do unoconv -f pdf "${f/%pdf/odt}"; done

(यह एक-लाइनर इस उत्तर में चित्रित मेरी अनुवाद स्क्रिप्ट का एक संशोधन है ।)

आप बाद में किसी अन्य फ़ाइल स्वरूपों का उपयोग करना चाहते हैं, तो बस स्थानापन्न odtऔर pdfकिसी भी अन्य समर्थित इनपुट और आउटपुट प्रारूपों के लिए। आप दर्ज करके फ़ाइल प्रकार के लिए समर्थित प्रारूप पा सकते हैं unoconv -f odt --show। उदाहरण के लिए, एकल फ़ाइल का उपयोग परिवर्तित करने के लिए unoconv -f pdf myfile.odt

आगे की जानकारी और कार्यक्रम के लिए विकल्प टर्मिनल में प्रवेश करके man unoconvया ऑनलाइन उबुन्टु मैन्पेजेस पर जाकर प्राप्त किए जा सकते हैं


1

एक और नॉटिलस स्क्रिप्ट

यह बहुत ही सरल और हल्का Nautilus Script लिबरेऑफिस unoconvके साथ चयनित फ़ाइल (फाइलों) को पीडीएफ प्रारूप में बदलने के लिए उपयोग करता है:

#!/bin/sh
#Nautilus Script to convert selected LibreOffice-compatible file(s) to PDF
#
OLDIFS=$IFS
IFS="
"
for filename in $@; do
unoconv --doctype=document --format=pdf "$filename"
done
IFS=$OLDIFS

1

मैं एक नया उत्तर जोड़ रहा हूं, क्योंकि हाल के दिनों में पंडोक द्वारा ओडीटी फ़ाइलों को पढ़ने की क्षमता प्राप्त करके नए रूपांतरण पथों की एक श्रृंखला खोली गई थी

जब पंडोक एक फ़ाइल प्रारूप में पढ़ता है, तो इसे एक आंतरिक प्रारूप में परिवर्तित करता है, "देशी" (जो JSON का एक रूप है)।

अपने मूल स्वरूप से, फिर यह दस्तावेज़ को अन्य प्रारूपों की एक पूरी श्रृंखला में निर्यात कर सकता है। न केवल पीडीएफ, बल्कि DocBook, HTML, EPUB, DOCX, ASCIIdoc, DokuWiki, MediaWiki और क्या नहीं ...

चूंकि यहां वांछित आउटपुट प्रारूप पीडीएफ है, इसलिए हमारे पास अलग-अलग रास्तों का एक और विकल्प है, बशर्ते कि पंडोक एक पीडीएफ-इंजन को क्या कह रहा है । यहाँ वर्तमान में उपलब्ध पीडीएफ इंजनों की सूची है (पंडोक v2.7.2 के लिए मान्य और बाद में - पिछले संस्करण केवल एक छोटी सूची का समर्थन कर सकते हैं):

  • pdflatex: यह जरूरी है LaTeX Pandoc के अलावा स्थापित होने के लिए।

  • xelatex: यह जरूरी है XeLaTeX Pandoc के अलावा स्थापित होने के लिए (सामान्य के लिए एक अतिरिक्त पैकेज के रूप में भी उपलब्ध टेक्स वितरण )।

  • संदर्भ: इसके लिए पंडोक के अलावा ConTeXt की आवश्यकता होती है ; ConTeXt एक अतिरिक्त पैकेज के रूप में अधिकांश सामान्य TeX वितरणों के लिए उपलब्ध है )।

  • lualatex: इसके लिए पंडोक (सामान्य TeX वितरण के लिए एक अतिरिक्त पैकेज के रूप में भी उपलब्ध) के अलावा LuaTeX को स्थापित करने की आवश्यकता होती है ।

  • pdfroff: इसके लिए पंडोक के अलावा GNU रोफ की आवश्यकता होती है ।

  • wkhtml2pdf: इसके लिए पंडोक के अलावा wkhtmltopdf की आवश्यकता होती है ।

  • राजकुमार: यह जरूरी है PrinceXML Pandoc के अलावा स्थापित होने के लिए।

  • वीज़प्रिंट: इसके लिए पंडोक के अलावा वीज़प्रिन्ट की आवश्यकता होती है ।

अब पंडोक में एकीकृत कुछ और नए और नए पीडीएफ इंजन हैं, जिन्हें मैंने अभी तक खुद इस्तेमाल नहीं किया है और जिन्हें मैं वर्तमान में अधिक विवरण में वर्णित नहीं कर सकता: टेक्टोनिक और लेटेक्सएमके

चेतावनी: उम्मीद न करें कि आपके मूल दस्तावेज़ की उपस्थिति सभी पीडीएफ आउटपुट में प्रिंट पूर्वावलोकन या ओडीटी के पीडीएफ निर्यात में समान होगी! पंडोक, जब अभिसरण लेआउट को संरक्षित नहीं करता है , तो यह सामग्री और दस्तावेजों की संरचना को संरक्षित करता है : पैराग्राफ पैराग्राफ बने रहते हैं, शब्दों पर जोर दिया जाता है, शीर्ष लेख शीर्ष रहता है, आदि। लेकिन समग्र रूप से काफी बदल सकता है।

उदाहरण आज्ञा

pdflatex:

 pandoc -f odt -o mydoc.pdf mydoc.odt --pdf-engine=pdflatex

XeLaTeX:

 pandoc -f odt -o mydoc.pdf mydoc.odt --pdf-engine=xelatex

LuaLaTeX:

 pandoc -f odt -o mydoc.pdf mydoc.odt --pdf-engine=lualatex

प्रसंग:

 pandoc -f odt -o mydoc.pdf mydoc.odt --pdf-engine=context

GNU ट्रॉफ:

 pandoc -f odt -o mydoc.pdf mydoc.odt --pdf-engine=pdfroff

wkhtmltopdf:

 pandoc -f odt -o mydoc.pdf mydoc.odt --pdf-engine=wkhtml2pdf

PrinceXML:

 pandoc -f odt -o mydoc.pdf mydoc.odt --pdf-engine=prince

weasyprint:

 pandoc -f odt -o mydoc.pdf mydoc.odt --pdf-engine=weasyprint

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

 -V geometry:"paperwidth=23.3cm, paperheight=1000pt, margin=11.2mm, top=2cm"

जो शीर्ष पृष्ठ पर 2 सेमी और अन्य तीन किनारों पर 1.12 सेमी के मार्जिन के साथ एक कस्टम पेज आकार (डीआईएन ए 4 से थोड़ा बड़ा) का उपयोग करेगा।


कृपया ऊपर से चौथे पैरा की जाँच करें। यह अधूरा प्रतीत होता है।
डीके बोस

@DKBose: Thx, किया।
कर्ट पफीफले
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.