Відповіді:
Просто відкрийте документ у вільному офісі та оберіть Експортувати як PDF ... :
Для рішення командного рядка є unoconv, який перетворює файли з командного рядка:
unoconv -f pdf mydocument.odt
Примітка. Тільки починаючи з Ubuntu 11.10 unoconv залежить від Libre Office. Попередні версії unoconv (від Ubuntu <= 11.04) залежать від Open Office (але він також працюватиме з Libre Office).
unoconv
, це чудово!
unoconv: Cannot find a suitable office installation on your system.
, тому воно непридатне :(
Ви також можете використовувати командний рядок libreoffice
для своїх цілей. Це дає перевагу пакетного перетворення. Але можливі і окремі файли. Цей приклад перетворює всі файли ODT у поточному каталозі в PDF:
libreoffice --headless --convert-to pdf *.odt
Отримайте додаткову інформацію про параметри командного рядка за допомогою:
man libreoffice
--env:UserInstallation=file:///path/to/some/directory
.
unoconv
. Наприклад, я unoconv -f pdf *.ppt
успішно використовував лінію .
Ось ще кілька деталей про метод "не GUI".
Цей метод можна використовувати не лише для перетворення файлів ODT у PDF. Він також буде працювати для файлів MS Word DOCX (він буде працювати так само, як LibreOffice вміє обробляти конкретні ODT), і, як правило, для всіх типів файлів, які LibreOffice може відкрити.
Я не думаю, що є двійковий файл, названий libreoffice
як одна з інших запропонованих відповідей. Однак є soffice(.bin)
- двійковий, який можна використовувати для запуску LibreOffice з командного рядка. Зазвичай він знаходиться в /usr/lib/libreoffice/program/
; і дуже часто символьне посилання /usr/bin/soffice
вказує на це місце.
Тоді в більшості випадків параметрів --headless --convert-to pdf
недостатньо. Це повинно бути:
--headless --convert-to pdf:writer_pdf_Export
Не забудьте дотримуватися саме цієї літери!
Далі команда не працюватиме, якщо у вашій системі вже є екземпляр GUI LibreOffice. Її викликає помилка № 37531, відома з 2011 року . Додайте цей додатковий параметр до своєї команди:
"-env:UserInstallation=file:///tmp/LibreOffice_Conversion_${USER}"
Це створить нове окреме середовище, яке може використовуватись другий, безголовий екземпляр LO, не втручаючись у можливо запущений перший екземпляр LO GUI, запущений тим самим користувачем.
Також переконайтесь, що вказане --outdir /pdf
вами існує, і що у вас є дозвіл на написання. Або скоріше скористайтеся іншим вихідним режимом. Навіть якщо це лише перший раунд тестування та налагодження:
$ mkdir ${HOME}/lo_pdfs
Звідси:
/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
який у будь-якому випадку буде відрізнятися на Ubuntu ...). Він також працює на Debian Jessie 8.0 (використовуючи шлях /usr/lib/libreoffice/program/soffice
). На жаль, наразі не можна перевірити його на Ubuntu ....
Якщо все це не працює, під час спроби обробити DOCX:
Це може бути проблема з конкретним файлом DOCX, з яким ви намагаєтеся виконати команду ... Отже, спершу створіть дуже простий документ DOCX. Використовуйте для цього сам LibreOffice. Напишіть "Здрастуйте, світ!" на інакше порожній сторінці. Збережіть його як DOCX.
Спробуйте ще раз. Це працює з простим DOCX?
Якщо це знову не працює, повторіть крок 7, але цього разу збережіть як ODT.
Повторіть крок 8, але обов'язково посилайтеся на ODT цього разу.
Останнє: Використовуйте повний шлях до 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
Порівняйте їх із використовуваним командним рядком:
Для порівняння, власний (Mac OS X) вихід тут:
$ /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.
Додайте ще один аргумент у свій командний рядок, щоб застосувати застосування фільтра введення при 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"
Наутілус Сценарій
Цей сценарій використовує libreoffice для перетворення файлів, сумісних з LibreOffice, в PDF.
#!/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?
Примітка. Я вирішив видалити свою відповідь з цього питання та опублікувати тут модифіковану версію, коли зрозумів, що файли unoconv
взагалі не справляється з psw
файлами, і не успішно конвертує їх в інші формати. Там також можуть бути проблеми з docx
і xlsx
форматами.
Однак Libreoffice
повністю підтримує багато типів файлів; Повна документація доступна на офіційному веб-сайті, де детально описані дійсні формати введення та виводу.
Ви можете використовувати libreoffice
утиліту для перетворення командного рядка або unoconv , яка доступна у сховищах. Я вважаю, 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
або зайшовши на веб- сайти Ubuntu в Інтернеті .
Цей дуже простий і легкий сценарій Nautilus використовує unoconv
для перетворення вибраних файлів, сумісних з LibreOffice, у формат PDF:
#!/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
Я додаю нову відповідь, тому що останнім часом Pandoc відкрив ряд нових шляхів перетворення, набувши можливості читати файли ODT.
Коли Pandoc читає у форматі файлу, він перетворює його у внутрішній формат, "нативний" (що є формою JSON).
Після цього він може експортувати документ у цілу низку інших форматів. Не тільки PDF, але й DocBook, HTML, EPUB, DOCX, ASCIIdoc, DokuWiki, MediaWiki і що-ні ...
Оскільки тут потрібний вихідний формат - PDF, у нас є ще один вибір різних шляхів, передбачених тим, що Pandoc викликає pdf-двигун . Ось перелік доступних на даний момент двигунів PDF (дійсний для Pandoc v2.7.2 і пізніших версій - попередні версії можуть підтримувати лише менший список):
pdflatex: Для цього потрібно встановити LaTeX на додаток до Pandoc.
xelatex: для цього потрібно встановити XeLaTeX на додаток до Pandoc (також доступний як додатковий пакет до загальних дистрибутивів TeX ).
контекст: для цього потрібно встановити ConTeXt на додаток до Pandoc; ConTeXt доступний як додатковий пакет до більшості загальних дистрибутивів TeX ).
lualatex: для цього потрібно встановити LuaTeX на додаток до Pandoc (також доступний як додатковий пакет до загальних дистрибутивів TeX ).
pdfroff: Для цього потрібно встановити GNU Roff на додаток до Pandoc.
wkhtml2pdf: для цього потрібно встановити wkhtmltopdf крім Pandoc.
Prince : Для цього потрібно встановити PrinceXML, крім Pandoc.
weasyprint: для цього потрібно встановити weasyprint на додаток до Pandoc.
У Pandoc зараз інтегровано кілька нових і новіших двигунів PDF, яких я ще не використовував і які наразі не можу описати більш докладно: тектонічний та латексний .
ПОПЕРЕДЖЕННЯ: Не сподівайтесь, що зовнішній вигляд вашого оригінального документа буде однаковим у всіх виводах PDF до попереднього перегляду друку або експорту PDF у формат ODT! 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
ConTeXt:
pandoc -f odt -o mydoc.pdf mydoc.odt --pdf-engine=context
GNU troff:
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
Наведені вище команди є найбільш основними для перетворення. Залежно від вибраного двигуна PDF, можливо, існує багато інших варіантів контролю зовнішнього вигляду вихідного PDF-файлу. Наприклад, наступні додаткові параметри можуть бути додані до всіх цих шляхів, що проходять через LaTeX:
-V geometry:"paperwidth=23.3cm, paperheight=1000pt, margin=11.2mm, top=2cm"
яка використовуватиме нестандартний розмір сторінки (трохи більший за DIN A4) з полями 2 см на верхньому краї та 1,12 см на інших трьох краях).