Я должен ждать долго после использования этой команды LibreOffice, которая предназначена для преобразования DOCX в PDF:
libreoffice --headless --convert-to pdf test.docx --outdir /pdf
Но я не получаю ответа и никаких ошибок. Никакой файл не конвертируется. Похоже, терминал висит.
Итак, есть ли способ отслеживать ошибку?
Прежде всего, я попытаюсь использовать абсолютные пути к команде.
Я подозреваю, что libreoffice
файл libreoffice
не работает – вам нужно найти двоичный файл soffice
и посмотреть, работает ли это.
Тогда вашего --convert-to pdf
недостаточно. Это должно быть:
--convert-to pdf:writer_pdf_Export
Обязательно следуйте именно этой капитализации!
Затем команда не будет работать, если в вашей системе уже запущен и запущен графический интерфейс LibreOffice. Это вызвано ошибкой, известной с 2011 года . Добавьте этот дополнительный параметр в свою команду:
"-env:UserInstallation=file:///tmp/LibreOffice_Conversion_${USER}"
Это создаст новую отдельную среду, которая может быть использована вторым безгласным LO-экземпляром без вмешательства в возможный запуск первого экземпляра GUI LO, запущенного одним и тем же пользователем.
Кроме того, убедитесь, что указанный --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 Mavericks 10.9.5 с LibreOffice v4.4.3.2 (используя мой конкретный путь для двоичного soffice
который будет по-другому для вас …).
Если все это не работает:
Это может быть проблема с конкретным файлом DOCX, с которым вы пытаетесь выполнить команду … Итак, создайте очень простой документ DOCX. Для этого используйте LibreOffice. Напишите «Привет, мир!» на другой пустой странице. Сохраните его как DOCX.
Попробуй еще раз. Работает ли он с простым DOCX?
Если он снова не работает, повторите шаг 7, но на этот раз сохраните его как ODT.
Повторите шаг 8, но не забудьте указать ODT на этот раз.
Последнее: используйте полный путь к soffice
, к soffice.bin
и к libreoffice
и запускайте каждый с параметром -h
:
$ /path/to/libreoffice -h $ /path/to/soffice -h $ /path/to/soffice.bin -h
Сравните их с используемой командной строкой:
Есть ли какие-либо изменения в именах параметров, капитализации, количестве используемых тире и т. Д.?
Для сравнения, мой собственный результат здесь:
$ /Applications/LibreOffice.app/Contents/MacOS/soffice -h LibreOffice 4.4.3.2 88805f81e9fe61362df02b9941de8e38a9b5fd16 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 userinteraction 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. 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 может не только конвертировать DOCX в PDF в командной строке:
Конечно, результаты никогда не будут идеальными, и иногда они даже будут неприемлемы для вас.
Число рейнольдса выход в формате PDF :
Чтобы контролировать, какой компонент LibreOffice генерирует PDF-выход, вы можете использовать эти варианты:
--convert-to pdf:writer_pdf_Export --convert-to pdf:calc_pdf_Export --convert-to pdf:draw_pdf_Export --convert-to pdf:impress_pdf_Export --convert-to pdf:writer_web_pdf_Export
Число рейнольдса вход, который не является DOCX :
Чтобы внедрить инфильтраты для входных форматов, отличных от DOCX, вы можете использовать (список не заполнен):
--infilter="HTML Document" # for HTML input --infilter="MediaWiki" # for MediaWiki input --infilter="Text CSV" # for CSV spreadsheet input --infilter="Microsoft PowerPoint 2007/2010 XML" # for PPTX input --infilter="Microsoft PowerPoint 97/2000/XP" # for PPT input --infilter="Windows Metafile" # for WMF input --infilter="Enhanced Metafile" # for EMF input --infilter="Scalable Vector Graphics" # for SVG input --infilter="Microsoft Excel 2007/2010 XML" # for XLSX input --infilter="Microsoft Excel 97/2000/XP" # for XLS input --infilter="Microsoft Excel 95" # for some XLS input --infilter="Microsoft Excel 5.0" # for some XLS input
Число рейнольдса выход, который не является PDF :
Чтобы преобразовать в определенные выходные форматы, вы можете использовать (list not complete):
--convert-to html:HTML --convert-to html:draw_html_Export # force "Draw" to generate the HTML --convert-to mediawiki:MediaWiki_Web # generate MediaWiki output --convert-to csv:"Text - txt - csv (StarCalc)" # generate CSV spreadsheet output --convert-to pptx:"Impress MS PowerPoint 2007 XML" # generate PPTX --convert-to ppt:"MS PowerPoint 97" # generate PPT --convert-to wmf:impress_wmf_Export # force "Impress" to generate the WMF --convert-to wmf:draw_wmf_Export # force "Draw" to generate the WMF --convert-to emf:impress_emf_Export # force "Impress" to generate the EMF --convert-to emf:draw_emf_Export # force "Draw" to generate the EMF --convert-to svg:impress_svg_Export # force "Impress" to generate the SVG --convert-to svg:draw_svg_Export # force "Draw" to generate the SVG --convert-to xlsx:"Calc MS Excel 2007 XML" # generate XLSX --convert-to xls:"MS Excel 97" # generate XLS like Excel 97 --convert-to xls:"MS Excel 95" # generate XLS like Excel 95 --convert-to xls:"MS Excel 5.0/95" # generate XLS like Excel 5.0/95
Может показаться глупым, но я страдал от этого: в Ubuntu 14.04 недостаточно установить только пакет libreoffice-core или -common для преобразования в PDF, но вам нужно установить libreoffice-writer вместо / дополнительно. Важно отметить, что libreoffice-core | common, кажется, приносит некоторую функциональную базу libreoffice, отсюда и имя ;-), которое не выдает ошибку, если выполняется для преобразования некоторого файла, но вместо этого просто кажется, что ждет какой-то сокет или такой для ввода или что-то еще … После того, как я установил libreoffice-writer, который имеет -core | общий как зависимость, преобразование некоторого файла ODT в PDF работало как шарм с той же самой командной строкой, что и раньше.
Кажется немного сумасшедшим, что приложение выглядит так, как будто оно работает как-то, но просто не может быть из-за недостающих пакетов и ничего не говорит об этом.
Обновить
Текущая версия libreoffice работает: v5.2.6.2 (mac)
Я использую следующую команду
/Applications/LibreOffice.app/Contents/MacOS/soffice --headless --convert-to pdf --outdir . the_file_to_convert
OLD
Кажется, что преобразование не работает в более новой версии (> 4.2.4.2). Я использую libreoffice 4.2.4.2. Вы можете загрузить более старые версии из http://downloadarchive.documentfoundation.org/libreoffice/old/4.2.4.2/
linux (с использованием пакета deb):
libreoffice4.2 --headless --convert-to pdf myfile.odt
окна:
swriter.exe --headless --convert-to pdf myfile.odt
Я тоже использую LibreOffice 4.2.8.2 (в GNU / Linux), но я попытался преобразовать файл DOC в HTML-файл. Я установил libreoffice-headless
, но терминал тоже висел. Я пробовал каждую пулю Курта Пфайфле, но он не работал …
Решение было простым: установка libreoffice-writer
(возможно, libreoffice-filters
тоже в порядке, но это зависит от libreoffice-writer
и других больших компонентов LibreOffice).
Надеюсь, это поможет.