Я должен ждать долго после использования этой команды LibreOffice, которая предназначена для преобразования DOCX в PDF:
libreoffice --headless --convert-to pdf test.docx --outdir /pdf
Но я не получаю ответа и ошибок. Ни один файл не конвертируется. Похоже терминал висит.
Итак, есть ли способ отследить ошибку?
Прежде всего, я бы попробовал указать абсолютные пути к команде.
Я подозреваю, что libreoffice
бинарный не работает — вы должны найти soffice
двоичный файл и посмотреть, если это работает.
Тогда ваш --convert-to pdf
недостаточно Это должно быть:
--convert-to pdf:writer_pdf_Export
Обязательно следуйте именно этой заглавной!
Затем команда не будет работать, если в вашей системе уже запущен экземпляр GUI 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:
Чтобы преобразовать в определенные выходные форматы, вы можете использовать (список не полный):
--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 | common в качестве зависимости, преобразование некоторого 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).
Надеюсь, это поможет.