libreoffice
的命令行来实现你的目的。这样可以批量转换文件,但也可以单个文件转换。以下示例将当前目录中的所有ODT文件转换为PDF:libreoffice --headless --convert-to pdf *.odt
使用以下命令行选项获取更多信息:
man libreoffice
--env:UserInstallation=file:///path/to/some/directory
。 - toklandunoconv
进行批量转换。例如,我使用了命令 unoconv -f pdf *.ppt
。 - XavierStuvw--convert-to
的说明是 "它意味着 --headless
"。因此,libreoffice --convert-to pdf *.odt
也应该可以工作(至少对于版本 5.1.6.2)。 - Marten KoetsierC:\Program Files\LibreOffice\program
,并且命令是soffice --headless --convert-to pdf *.odt
。 - user875234*.odg
。 - end of rainbowunoconv -f pdf mydocument.odt
unoconv
,太棒了! - Boris Däppensoffice
,在Ubuntu上将会有所不同...)。在Debian Jessie 8.0上也可以工作(使用路径/usr/lib/libreoffice/program/soffice
)。很抱歉,现在无法在Ubuntu上进行测试...soffice
的路径,在Ubuntu上将会有所不同...)。它还在Debian Jessie 8.0上工作(使用路径/usr/lib/libreoffice/program/soffice
)。很抱歉,现在无法在Ubuntu上进行测试...soffice
、soffice.bin
和libreoffice
使用完整路径,并带上-h
参数运行每个命令:我正在添加一个新答案,因为最近一系列新的转换路径由Pandoc开启,使其能够读取ODT文件。
当Pandoc读取文件格式时,它将其转换为内部格式,即"本地"(一种JSON形式)。
从其本机形式,它可以将文档导出为一整套其他格式。不仅包括PDF,还有DocBook、HTML、EPUB、DOCX、ASCIIdoc、DokuWiki、MediaWiki等等...
由于这里期望的输出格式是PDF,我们有另一种选择不同路径,由Pandoc称之为pdf-engine提供。以下是当前可用的PDF引擎列表(适用于Pandoc v2.7.2及更高版本 - 旧版本可能仅支持较小的列表):
pdflatex:这需要安装LaTeX和Pandoc。
xelatex:这需要安装XeLaTeX和Pandoc(也可作为通用TeX发行版的附加包安装)。
context:这需要安装ConTeXt和Pandoc;ConTeXt可作为大多数通用TeX发行版的附加包安装。
pdfroff:这需要安装GNU Roff和Pandoc。
wkhtml2pdf:这需要安装wkhtmltopdf和Pandoc。
prince:这需要安装PrinceXML和Pandoc。
weasyprint:这需要安装weasyprint和Pandoc。
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
pandoc -f odt -o mydoc.pdf mydoc.odt --pdf-engine=prince
pandoc -f odt -o mydoc.pdf mydoc.odt --pdf-engine=weasyprint
-V geometry:"paperwidth=23.3cm, paperheight=1000pt, margin=11.2mm, top=2cm"
将使用自定义页面大小(略大于DIN A4),顶边缘边距为2cm,其余三个边的边距为1.12cm)。
鹦鹉螺脚本
该脚本利用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
unoconv
无法很好地处理psw
文件,并且不能成功将其转换为其他格式时,我决定删除我的回答from this question并在这里发布一个修改过的版本。docx
和xlsx
格式可能也会存在问题。
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 manpages online。
这个非常简单且轻量级的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