vis*_*hal 53 php pdf libreoffice libreoffice-base ubuntu-14.04
在使用这个旨在将DOCX转换为PDF的LibreOffice命令后,我必须等待很长时间:
libreoffice --headless --convert-to pdf test.docx --outdir /pdf
但我没有得到回应,也没有错误.没有文件被转换.它看起来像终端悬挂.
那么,有没有办法跟踪错误?
Kur*_*fle 102
我首先尝试给出命令的绝对路径.
我怀疑libreoffice二进制文件不起作用 - 你必须找到soffice二进制文件,看看是否有效.
那么,你--convert-to pdf还不够.它需要是:
--convert-to pdf:writer_pdf_Export
Run Code Online (Sandbox Code Playgroud)
一定要完全遵循这个大写!
接下来,如果已在系统上启动并运行LibreOffice GUI实例,则该命令将不起作用.它是由2011年以来的错误引起的.将此附加参数添加到您的命令:
"-env:UserInstallation=file:///tmp/LibreOffice_Conversion_${USER}"
Run Code Online (Sandbox Code Playgroud)
这将创建一个新的独立环境,可由第二个无头LO实例使用,而不会干扰由同一用户启动的可能正在运行的第一个GUI LO实例.
此外,请确保--outdir /pdf您指定的确实存在,并且您具有写入权限.或者,而是使用不同的输出目录.即使它仅用于第一次测试和本次调试:
$ mkdir ${HOME}/lo_pdfs
Run Code Online (Sandbox Code Playgroud)因此:
/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
Run Code Online (Sandbox Code Playgroud)
这适用于Mac OS X Mavericks 10.9.5和LibreOffice v4.4.3.2(使用我对二进制文件的特定路径,soffice无论如何......).
如果这一切都不起作用:
对于您尝试使用命令的特定DOCX文件可能存在问题...因此,首先创建一个非常简单的DOCX文档.使用LibreOffice本身.写下"Hello World!" 在另一个空页面上.将其另存为DOCX.
再试一次.它与简单的DOCX一起使用吗?
如果它再次不起作用,请重复步骤7,但这次保存为ODT.
重复步骤8,但这次确保参考ODT.
最后:使用完整路径to soffice,to soffice.bin和to libreoffice并使用-h参数运行每个参数:
$ /path/to/libreoffice -h
$ /path/to/soffice -h
$ /path/to/soffice.bin -h
Run Code Online (Sandbox Code Playgroud)
将它们与您使用的命令行进行比较:
参数名称,大小写,使用的破折号等都有变化吗?
为了比较,我自己的输出在这里:
$ /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.
Run Code Online (Sandbox Code Playgroud)在soffice打开DOCX文件时,在命令行中再添加一个参数以强制应用输入过滤器:
--infilter="Microsoft Word 2007/2010/2013 XML"
Run Code Online (Sandbox Code Playgroud)
要么
--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"
Run Code Online (Sandbox Code Playgroud)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
Run Code Online (Sandbox Code Playgroud)
回覆.输入不是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
Run Code Online (Sandbox Code Playgroud)
回覆.输出不是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
Run Code Online (Sandbox Code Playgroud)
小智 5
更新资料
libreoffice当前版本正在运行:v5.2.6.2(mac)
我正在使用以下命令
/Applications/LibreOffice.app/Contents/MacOS/soffice --headless --convert-to pdf --outdir . the_file_to_convert
Run Code Online (Sandbox Code Playgroud)
旧
似乎该转换在较新版本(> 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
Run Code Online (Sandbox Code Playgroud)视窗:
swriter.exe --headless --convert-to pdf myfile.odt
Run Code Online (Sandbox Code Playgroud)听起来可能很愚蠢,但我遭受了这一点:在 Ubuntu 14.04 中,仅安装软件包libreoffice-core或-common转换为 PDF是不够的,但您需要libreoffice-writer改为/另外安装。需要注意的重要一点是,它libreoffice-core|common似乎引入了一些功能性的 libreoffice 基础,因此得名 ;-)。如果执行转换某些文件,这不会出错,而是似乎只是在等待某个套接字或诸如此类的输入或其他任何东西...安装后libreoffice-writer,它具有[...]-core|common依赖项,将某些 ODT 文件转换为 PDF 就像与之前使用的完全相同的命令行的魅力。
看起来有点疯狂,该应用程序看起来像它以某种方式工作,但由于缺少包而根本无法运行,并且没有说明任何有关它的信息。