Как я могу преобразовать файл ODT в PDF?

Делает любой знает, как преобразовать ODT файл (LibreOffice) к PDF?

61
задан 8 November 2013 в 16:47

7 ответов

Просто откройте документ с офисом Весов и выберите Export в качестве PDF...:

enter image description here

Для решения для командной строки существует unoconv Install NAME, который преобразовывает файлы из командной строки:

unoconv -f pdf mydocument.odt

Примечание: Только начиная с Ubuntu 11.10 unoconv зависит от Office Libre. Предыдущие unoconv версии (из Ubuntu <= 11.04) зависят от, Открывают Office (но это будет также работать с Office Libre).

68
ответ дан 22 November 2019 в 23:37

Можно также использовать командную строку libreoffice для Вашей цели. Это дает Вам преимущество пакетного преобразования. Но единственные файлы также возможны. Этот пример преобразовывает все файлы ODT в текущем каталоге к PDF:

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

Получите больше информации о параметрах командной строки с:

man libreoffice
87
ответ дан 22 November 2019 в 23:37

Примечание: Я решил удалить свой ответ из этого вопроса и отправить измененную версию его здесь, когда я понял это unoconv не имеет дело с psw файлы вообще хорошо, и не преобразовывают их успешно в другие форматы. Могут также быть проблемы с docx и xlsx форматы.


Однако Libreoffice полностью поддержки много типов файлов; полная документация доступна на официальном сайте, который детализирует допустимые входные и выходные форматы.

Вы могли использовать командную строку libreoffice преобразуйте утилиту или unoconv, который доступен в репозиториях. Я нахожу unoconv чтобы быть очень полезным, и это, вероятно, что Вы хотите. Даже при том, что Takkat кратко упомянул 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 онлайн.

2
ответ дан 22 November 2019 в 23:37

Сценарий наутилуса

Этот сценарий использует 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

Поскольку инструкции по установке видят здесь: Как я могу установить сценарий Наутилуса?

4
ответ дан 22 November 2019 в 23:37

Другой сценарий наутилуса

Этот очень простой и легкий Сценарий Наутилуса использование 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
1
ответ дан 22 November 2019 в 23:37

Вот еще несколько деталей о методе "не-GUI".

  1. Можно использовать этот метод не только для преобразования файлов ODT в PDF. Это будет также работать на MS Word файлы DOCX (это будет работать, а также LibreOffice может обработать конкретный ODT), и, в целом все типы файлов, которые может открыть LibreOffice.

  2. Я не думаю, что существует названный двоичный файл libreoffice как один из других предложенных ответов. Однако существует soffice(.bin) - двоичный файл, который может использоваться для запуска LibreOffice с командной строки. Это обычно располагается в /usr/lib/libreoffice/program/; и очень часто, символьная ссылка /usr/bin/soffice точки к тому местоположению.

  3. Затем в большинстве случаев параметры --headless --convert-to pdf не достаточны. Это должно быть:

    --headless --convert-to pdf:writer_pdf_Export
    

    Обязательно следуйте точно за этой капитализацией!

  4. Затем, команда не будет работать, если уже будет экземпляр LibreOffice GUI и работа Вашей системы. Это вызывается ошибкой № 37531, известный с 2011. Добавьте этот дополнительный параметр к своей команде:

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

    Это создаст новую, отдельную среду, которая может использоваться вторым, бездисплейным экземпляром LO, не вмешиваясь в возможное выполнение первый GUI экземпляр LO, запущенный тем же пользователем.

  5. Кроме того, удостоверьтесь что --outdir /pdf Вы указываете, действительно существует, и что у Вас есть разрешение записи к нему. Или, скорее используйте другой выходной dir. Даже если это только для первого тестирования и отладки вокруг:

    $ 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 Йосемити 10.10.5 с LibreOffice v5.1.2.2 (использующий мой определенный путь для двоичного файла soffice который будет отличаться на Ubuntu так или иначе...). Это также работает над Debian Jessie 8.0 (использующий путь /usr/lib/libreoffice/program/soffice). Извините, не может протестировать его на Ubuntu прямо сейчас....

    Если все это не работает, когда Вы пытаетесь обработать DOCX:

  7. Это может быть проблема с определенным файлом DOCX, которым Вы пробуете команду... Поэтому создайте очень простой собственный документ DOCX сначала. Используйте сам LibreOffice для этого. Запишите "Привет Мир!" на в других отношениях пустой странице. Сохраните его как 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
    
    • Вы получаете вывод здесь?
    • Для которого один из этих трех двоичных файлов/символьных ссылок?
    • Запишите выводы.
    • Скажите нам свои выводы!!!
       

    Сравните их с командной строкой, которую Вы использовали:

    • Есть ли какие-либо изменения на названия параметра, капитализации, количество используемых тире, и т.д.??
       

    Для сравнения мое собственное (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.
    
  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"
    
8
ответ дан 22 November 2019 в 23:37

Я добавляю новый ответ, потому что недавно серия новых путей преобразования была открыта Pandoc, получающим возможность считать файлы ODT.

Когда Pandoc читает в формате файла, он преобразовывает его во внутренний формат, "собственный компонент" (который является формой JSON).

От его собственной формы это может затем экспортировать документ в целый диапазон других форматов. Не только PDF, но также и DocBook, HTML, EPUB, DOCX, ASCIIdoc, DokuWiki, MediaWiki и этажерка...

Так как здесь требуемым выходным форматом является PDF, у нас есть другой выбор различных путей, обеспеченных тем, что Pandoc называет механизмом PDF. Вот список в настоящее время доступных механизмов PDF (допустимый для Pandoc v2.7.2 и позже - предыдущие версии могут поддерживать только меньший список):

  • pdflatex: Это требует, чтобы ЛАТЕКС был установлен в дополнение к Pandoc.

  • xelatex: Это требует, чтобы XeLaTeX был установлен в дополнение к Pandoc (также доступный как дополнительный пакет к общим дистрибутивам TEX).

  • контекст: Это требует, чтобы ConTeXt был установлен в дополнение к Pandoc; ConTeXt доступен как дополнительный пакет большинству общих дистрибутивов TEX).

  • lualatex: Это требует, чтобы LuaTeX был установлен в дополнение к Pandoc (также доступный как дополнительный пакет к общим дистрибутивам TEX).

  • pdfroff: Это требует, чтобы GNU Roff был установлен в дополнение к Pandoc.

  • wkhtml2pdf: Это требует, чтобы wkhtmltopdf был установлен в дополнение к Pandoc.

  • принц: Это требует, чтобы PrinceXML был установлен в дополнение к Pandoc.

  • weasyprint: Это требует, чтобы weasyprint был установлен в дополнение к Pandoc.

Еще существуют некоторые и более новые механизмы PDF, теперь интегрированные в Pandoc, который я еще не использовал сам и который я в настоящее время не могу описывать более подробно: архитектурный и latexmk.

ПРЕДУПРЕЖДЕНИЕ: не ожидайте, что появление Вашего оригинала документа будет идентично во всех выводах 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. Например, следующие дополнительные параметры могут быть добавлены ко всем тем путям маршрутизация через ЛАТЕКС:

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

который будет использовать пользовательский размер страницы (немного больше, чем DIN A4) с полями 2 см на верхнем краю и 1.12 см в других трех краях).

1
ответ дан 22 November 2019 в 23:37

Другие вопросы по тегам:

Похожие вопросы: