以Web服务的形式运行OpenOffice。
项目描述
ulif.openoffice
通过Python、命令行或HTTP(包括XMLRPC)将办公文档转换为LibreOffice/OpenOffice。
此包提供工具,如WSGI应用、缓存管理器和命令行转换器,以简化Python程序员对LibreOffice/OpenOffice安装的访问。除了基本转换外,它还提供“文档处理器”,以便进一步调整生成的文档(主要是HTML)。
这些处理器默认允许从HTML转换中提取CSS,删除LibreOffice特定的标签,压缩、解压缩等。
如果给定的处理器不足以满足您的需求,或者您想对结果进行特殊处理(例如,对生成的文档进行加密签名、添加水印等),您可以通过使用Python入口点API在自己的包中定义自己的附加文档处理器。 ulif.openoffice 将在文档处理过程中自动集成它们,并在Web服务、命令行客户端和Python API中提供它们。
资源
ulif.openoffice的源代码托管在
完整的文档可以在以下位置找到
示例
通过Python进行转换
通过Python API将.doc转换为.html的示例
>>> from ulif.openoffice.client import Client >>> client = Client() >>> result = client.convert('document.doc') >>> pprint(result) ('.../document.html.zip', None, {'error': False, 'oocp_status': 0})
默认情况下,生成的文档是经过润色的HTML,带有单独的样式表和图片,所有这些都放入一个单一的.zip文档中。
您可以通过各种选项配置文档转换。这样,您可以设置输出类型(至少支持PDF、HTML、XHTML和TXT),告诉是否应该提取单独的CSS样式表,应该生成哪种PDF格式(1.3即PDF/A或1.4),以及许多其他事情。
通过命令行进行转换
我们还提供了一个方便的命令行工具来执行转换
$ oooclient document.doc RESULT in /tmp/.../document.html.zip
如您所见,结果放在一个新创建的目录中。
命令行客户端还提供帮助,显示所有支持选项、文档处理器等。
$ oooclient --help
将给出一个综合列表。
通过Web(XMLRPC或RESTful)进行转换
ulif.openoffice包含两个WSGI应用程序,它们为Web客户端提供文档转换服务。一个是RESTful文档转换服务,另一个是基于WSGI的XMLRPC服务器。运行其中一个应用程序,您可以将办公文档发送到服务器,并收到转换后的文档。
所有WSGI文档转换器支持(可选)本地缓存,它会存储转换结果,并在请求已转换的文档时提供它(绕过新的转换)。
该软件包包含准备好的配置文件,只需几分钟即可设置和启动此类基于Web的文档转换器。
有关详细信息,请参阅
下的扩展文档。
安装
用户安装
ulif.openoffice可以通过pip进行安装
$ pip install ulif.openoffice
之后,所有命令行工具都应可用。
开发者安装
建议在虚拟环境中设置源
$ virtualenv py27 # Python 2.6, 2.7 are supported $ source py27/bin/activate (py27) $
获取源代码
(py27) $ git clone https://github.com/ulif/ulif.openoffice.git (py27) $ cd ulif.openoffice
安装测试包
(py27) $ python setup.py dev
建议在运行测试之前启动oooctl守护进程
(py27) $ oooctl start
这将使LibreOffice在后台监听,并显著减少测试的运行时间。
运行测试
(py27) $ py.test
我们还支持tox来运行所有支持的Python版本的测试
(py27) $ pip install tox (py27) $ tox
当然,您必须安装相应的Python版本(目前:Python 2.6,2.7)。
运行覆盖率检测器
(py27) $ py.test --cov=ulif.openoffice # for cmdline results (py27) $ py.test --cov=ulif.openoffice --cov-report=html
后者将在子目录中生成HTML覆盖率报告。
安装用于Sphinx-base文档的包
(py27) $ python setup.py docs (py27) $ cd doc (py27) $ make html
将在子目录中生成文档。
许可证
ulif.openoffice受GPL版本2的约束。
更改记录
1.1.1 (2015-07-23)
正确关闭文件句柄。
命令行客户端现在只处理一个输入文件,不再复制整个目录的内容。
1.1 (2015-07-12)
添加了一个基于WSGI的XMLRPC应用程序,用于通过XMLRPC触发转换。
为客户端和XMLRPC客户端添加了get_cached方法,用于检索存储在缓存中的文档。
为cachemanager添加了get_cached_file_by_source方法。此方法成本较高,但允许在不使用缓存键的情况下找到缓存的文件。
修复了错误:OOCP处理器为XHTML输出返回了错误的结果文件路径。
修复了错误:如果客户端转换失败,则删除临时目录。
修改了测试,以接受在Ubuntu 14.04上生成的文档。
修复了错误:在copytree()中捕获shutil.Error [感谢:sbywater]
添加了新选项:–css-cleaner-prettify-html,用于美化生成的HTML代码。在之前的版本中,这已自动执行,可能导致渲染输出出现空白。此选项(默认禁用)启用旧的行为。修复了#3。
1.0 (2013-09-02)
对整个包进行了重大重构。
convert现在使用命令行工具unoconv。您需要此工具才能使用此包。
由于unoconv包含了包脚本convert所需的所有内容(以及更多),因此不再提供convert脚本。只需使用unoconv即可。
oooctl现在是一个用于
unoconv -l
的守护进程。将PEP 8规则应用于cachemanager.py。
将单元测试移动到包根目录中的专用
tests/
目录。从Zope测试切换到py.test。
移除了pyuno服务器、客户端和相关组件。
移除了基于直接pyuno访问的查找功能。
移除了对zc.buildout的支持。
移除了基于cherrypy的restserver。新的WSGI应用是其替代品。
添加了基于WSGI的文档转换器。
添加了简单的htaccess WSGI过滤器以实现Web身份验证。
将cachemanager替换为更健壮和轻量级的版本。旧缓存不再与新实现兼容。
引入了一个新的中心Options组件,用于管理所有其他组件支持的选项。
0.4 (2011-02-11)
添加了在文档中查找文本的功能。感谢akasig.org的sig提供的补丁!
0.3 (2010-11-17)
添加了完全禁用缓存的选项:将--cache-dir设置为空字符串以禁用缓存[感谢Adama Groszer提供的补丁!]
在后台模式下运行时移除了不想要的输出。
cachemanager现在支持列出缓存目录中包含的所有源。
修复了cachemanager中的错误:在罕见情况下(两个具有相同MD5散列摘要的不同的输入文件,并且文件状态相同,cachemanager认为它们相同,从而导致缓存中的不一致)。我们现在彻底检查两个这样的文件是否不同。
大量测试修复[感谢Adam Groszer提供的补丁!]
0.2.1 (2010-06-13)
修复了处理pyuno monkey-patching标准__import__函数的修复。较新的pyuno版本不再进行此类操作(这是一个改进)。
修复了在前台模式下启动`oooctl`服务器的问题。它与较新的OpenOffice.org/pyuno安装不正确地协同工作。现在在尝试停止前台运行的oooctl服务器时,您不需要再按两次CTRL-C了。
0.2 (2010-05-20)
添加了许可证和版权文件,以符合主要Linux发行商的政策。
添加了sphinx文档。
修复了返回缓存HTML结果时的错误结果路径。
为oooctl添加了模式
fg
。使用oooctl fg现在可以在前台启动oooctl。为pyunoctl添加了模式
fg
。使用pyunoctl fg现在可以在前台启动pyunoctl。为oooctl添加了状态检查:当OpenOffice.org服务器在运行时关闭时,它会自动重新启动。检查每秒发生一次。
使用标准库
doctest
而不是zope.testing.doctest
。更改了PDF创建方式:默认情况下,现在在转换为PDF时创建常规PDF(而不是PDF/A)。这是由于许多在64位平台上运行的最近OpenOffice.org二进制文件的字节序错误。
0.1 (2010-03-02)
初始实现。
项目详情
ulif.openoffice-1.1.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a5a08e4282b4d53b8e713b186b63ce755995a861ce20a5175a185485e1ddc2ea |
|
MD5 | 133998d527414831c01dc3bc1f1a97c7 |
|
BLAKE2b-256 | c56d39f865ce74409e770dde895444053db54afa5b93733ba4abe8c49687e316 |