跳转到主要内容

以Web服务的形式运行OpenOffice。

项目描述

ulif.openoffice

通过Python、命令行或HTTP(包括XMLRPC)将办公文档转换为LibreOffice/OpenOffice。

build-status

此包提供工具,如WSGI应用、缓存管理器和命令行转换器,以简化Python程序员对LibreOffice/OpenOffice安装的访问。除了基本转换外,它还提供“文档处理器”,以便进一步调整生成的文档(主要是HTML)。

这些处理器默认允许从HTML转换中提取CSS,删除LibreOffice特定的标签,压缩、解压缩等。

如果给定的处理器不足以满足您的需求,或者您想对结果进行特殊处理(例如,对生成的文档进行加密签名、添加水印等),您可以通过使用Python入口点API在自己的包中定义自己的附加文档处理器。 ulif.openoffice 将在文档处理过程中自动集成它们,并在Web服务、命令行客户端和Python API中提供它们。

资源

ulif.openoffice的源代码托管在

https://github.com/ulif/ulif.openoffice

完整的文档可以在以下位置找到

https://ulif-openoffice.readthedocs.org/en/latest/

示例

通过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的文档转换器。

有关详细信息,请参阅

https://ulif-openoffice.readthedocs.org/en/latest/

下的扩展文档。

安装

用户安装

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的约束。

作者

由Uli Fouquet(uli at gnufix dot de)撰写。请随时联系我就愿望、请求、建议或其他问题。

更改记录

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 (1.6 MB 查看哈希值)

上传时间: 源代码

由以下组织支持