文章分类:Web前端
因为公司的一些业务需求,我需要批量的将所有的xls文件转化为pdf文件,如果一个个的点击,借助于adobe,那么无疑会需要很长的时间;相信这样子的业务需要肯定有市场的,这也意味着肯定存在这样子的软件。
网上搜索了很多软件,竟然发现这样子的软件多数为收费软件,或者存在免费软件,但是批量转的文件数量受到限制,而且转的效果并不是十分理想。
想到openoffice可以直接导出为pdf文件的功能,我想一定可以通过openoffice批量的将excel转为pdf。在网上搜索发现,debian系列的liunx源里面存在一个名叫unoconv的包,可以批量的将exce转为pdf,关键是转的速度很快,而且质量很高!好的,就用这款软件来实现吧。
由于公司封锁了多数文件的下载,我试验反复没有成功,让同事帮忙下载的文件,安装好以后也没有效果(我使用的是fedora,并且unoconv有rpm的包),就在我一筹莫展的时候,我发现原来下载的文件是不正确的(名字都可以看出来)。
从新下载几百k的小rpm包,成功安装。
新建excel文件,保存为a.xls,
在终端运行 unconv -f pdf a.xls
几秒钟后,转化成功。
如果有中文文件是不是可以完美的转为pdf?!带着疑问,我重新测试,good!如果多个文件的效率呢?不断的粘帖,等到了一百个文件左右的时候,重新运行,如此的高效,perfect!
至此,我已经完成了自己的一大心愿。
所以,如果你在为快速的转任何office文档,txt文档到pdf而发愁的话,那么,我推荐你使用linux(主要是debian系列和redhat系列的linux)和openoffice完美的解决这所有的问题。
另外,我发现unoconv是用python实现的,这也意味着两个跨平台的工具(openoffice和python)结合在一起,必然也可以产生跨平台的的windows版,只是我现在水平较弱,还没有实现,期待高手给出windows版的解决方案。
[b]批转换,带目录树
参考链接 http://bbs.chinaunix.net/archiver/?tid-1378949.html[/b]
[quote]wenyunqiu 发表于 2009-02-25 16:36
请教:如何批量将Doc文件转换为Pdf文件?
要转换一个doc文件为PDF格式,只需在命令中执行:
$ unoconv -f pdf myDoc.doc
即会生成一个名为myDoc.pdf的pdf文件。
现在我需要将一个目录树下面所有的doc文件转化为pdf的文件副本 保留原文件 然后保持文件目录结构不变
程序怎样写最高效最美观(文件很多很多)
waker 发表于 2009-02-25 16:39
看看基础12篇中的find和xargs
我是DBA 发表于 2009-02-25 16:41
for i in `ls`
do
unoconv -f pdf $i
done
haimming 发表于 2009-02-25 16:46
find ./ -name "*.doc" -exec unoconv -f pdf {} \;
liaosnet 发表于 2009-02-25 16:48
:em17: :em17:
[code]
for i in *
do
unoconv -f pdf ${i}.doc
done
[/code]
kwokcn 发表于 2009-02-25 16:51
[quote]原帖由 [i]haimming[/i] 于 2009-2-25 16:46 发表 [url=http://bbs2.chinaunix.net/redirect.php?goto=findpost&pid=10114450&ptid=1378949][img]http://bbs2.chinaunix.net/images/common/back.gif[/img][/url]
find ./ -name "*.doc" -exec unoconv -f pdf {} \; [/quote]
LZ提到了是目录树,这个应该是正解。
haimming 发表于 2009-02-25 16:51
回复 #5 liaosnet 的帖子
dx,忘了目录结构了:mrgreen: :mrgreen:
ywlscpl 发表于 2009-02-25 16:53
for i in `ls *.doc`
do
unoconv -f pdf $i
done
ywlscpl 发表于 2009-02-25 16:54
恩,多层目录的话得用find
liaosnet 发表于 2009-02-25 16:58
[quote]原帖由 [i]haimming[/i] 于 2009-2-25 16:51 发表 [url=http://bbs3.chinaunix.net/redirect.php?goto=findpost&pid=10114499&ptid=1378949][img]http://bbs3.chinaunix.net/images/common/back.gif[/img][/url]
dx,忘了目录结构了:mrgreen: :mrgreen: [/quote]
额...那就得用find了..
find . -type f -name "*.doc" | xargs unoconv -f pdf
飞鸿无痕 发表于 2009-02-25 21:52
回复 #10 liaosnet 的帖子
严重同意!!!!!!!!!
dashan79 发表于 2009-02-26 10:32
unoconv linux不带的,需要下载一个吧。?
liaosnet 发表于 2009-02-26 10:49
[quote]原帖由 [i]dashan79[/i] 于 2009-2-26 10:32 发表 [url=http://bbs3.chinaunix.net/redirect.php?goto=findpost&pid=10117955&ptid=1378949][img]http://bbs3.chinaunix.net/images/common/back.gif[/img][/url]
unoconv linux不带的,需要下载一个吧。? [/quote]
:em17: :em17: 自己装的~
wtuter 发表于 2009-02-26 14:39
回复 #13 liaosnet 的帖子
我的也没有,那个版本的linux有自带的吗?
wenyunqiu 发表于 2010-04-09 14:36
debian是源包安装的
红帽似乎得下载安装 我只试过debian上的 批量转换文档格式确实很快很方便
709101040516 发表于 2010-04-09 14:52
linux 下安装包谁能提供一下呢。这样就省得用windows的了。
wenyunqiu 发表于 2010-04-09 14:56
[url]http://dag.wieers.com/rpm/packages/unoconv/[/url]
这是redhat的 这命令依赖openoffice 在红帽上我转化不成功 其它哪位试出来共享一下方法
wgyzhechao 发表于 2010-04-09 14:57
find ./ -type f -exec unoconv -f pdf {} \;
yigenjin 发表于 2010-04-09 15:20
[quote]for i in `ls`
do
unoconv -f pdf $i
done
[size=2][color=#999999]我是DBA 发表于 2009-02-25 16:41[/color] [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=10114394&ptid=1378949][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url][/size][/quote]
我同意5楼的做法。
你知道你这个`ls`的后果么?
后果就是很多文件名中存在空格的文件将不能正确地被处理。
页: [1] [/quote]