单纯的将Doc转换为pdf很简单,使用office软件直接在图形界面下转换即可,但是如果涉及到批量转换,最好还是使用命令行工具。
一、unoconv
简介
unoconv 利用 LibreOffice/OpenOffice 的 UNO 接口实现了命令行文档格式转换功能,支持所有 LibreOffice/OpenOfficee 支持的文件格式。 因此不管机器上安装的是LibreOffice还是OpenOffice,都可以使用unoconv进行格式转换,不过需要注意的是一台机器不能同时安装LibreOffice和OpenOffice。
使用
基础转换命令:
$ unoconv -f pdf xxx.doc
批量转换: 可以默认采用2002端口开启监听器(或者通过-p/–port参数指定端口),例如:
unoconv --listener &
sleep 20
unoconv -f pdf *.odt
unoconv -f doc *.odt
unoconv -f html *.odt
kill -15 %-
指定转换页数,文件名等:
-e, --export=name=value set export filter options
eg. -e PageRange=1-2
实例:
$ unoconv -f pdf -e PageRange=1-2 test.docx
这样就实现了只转换前两页。
转换效果
我的机器安装的是LibreOffice,效果还不错,和LibreOffic中的显示基本保持一致。不过少数doc文档在LibreOffice中显示有问题,因此转换后也是有问题的。
二、Abiword
简介:
AbiWord是一个以GNU通用公共许可证授权的免费文字处理软件,名称”AbiWord”是派生自意谓开放的西班牙语单词”Abierto”;支持Linux、Mac OS X(PowerPC)、Microsoft Windows、ReactOS、BeOS与其他操作系统,但对每个操作系统的支持程度都有所不同。 用它编辑文件后保存为.abw后缀,打开后为xml格式的文档。
使用
基础转换命令:
$ abiword --to=pdf xxx.doc
实际转换效果
实际转换效果并不好,测试下格式解析不佳,和原文差距较大,局部出现布局错乱的现象。
三、cups-pdf
简介
cups-pdf是一个虚拟打印机,输出效果和打印预览一致。这种方案保真性应该是最高的,但是相对来说不是很灵活,只能转成pdf。
使用
安装:
$ sudo apt-get install cups-pdf
转换命令:
$ oowriter -pt pdf your_word_file.doc
$ libreoffice -pt pdf your_word_file.doc
转换后的文件默认会保存在~/PDF文件夹中,不过中文文件的命名会有问题,会被命名为三位数字。
$ libreoffice --headless --print-to-file --printer-name pdf --outdir /home/xieyu xxx.doc
使用--print-to-file
选项可以指定打印输出目录和打印机,不过这里输出的是ps后缀的文件,可以重命名成pdf.
我这里(3.5版本)测试--print-to-file
命令偶尔会出现文字解析不出来的情况,和使用Libreoffice的--convert-to
选项结果一样。而4.1版本没有这个问题。
使用模拟打印的方式无法指定pdf文件的命名,灵活性不够好。
四 LibreOffice自带的转换命令
$ libreoffice --headless --convert-to pdf *.doc
$ soffice --headless --convert-to pdf *.doc
注意:在GUI下使用,如果已经开启了桌面环境的Libreoffice,命令行无法生效。 我这里(3.5版本)测试偶尔会出现文字解析不出来的情况,而4.1版本没有这个问题。