Skip to main content

pp.server - 生产和发布服务器

项目描述

pp.server是一个基于 FastAPI 的服务器实现,实现了 Produce & Publish 平台的服务器端功能。它被称为生产和发布服务器

Produce & Publish Server 提供了 Web 服务 API,用于使用以下外部 PDF 转换器之一将 HTML/XML + 资产转换为 PDF:

  • PrinceXML(www.princexml.com,商业)

  • PDFreactor(www.realobjects.com,商业)

  • Speedata Publisher(www.speedata.de,开源,实验支持)

  • WKHTMLTOPDF(www.wkhtmltopdf.org,开源,实验支持)

  • Vivliostyle Formatter(www.vivliostyle.com,商业,实验支持)

  • VersaType 格式化程序(www.trim-marks.com,商业,实验支持)

  • Antennahouse 7(www.antennahouse.com,商业)

  • Weasyprint(免费,不受支持)

  • Typeset.sh(www.typeset.sh,商业)

  • PagedJS(www.pagedjs.org,免费)

此外,还有使用Calibre(www.calibre.org,开源)生成 EPUB 文档的实验性支持。

Web 服务仅提供同步操作。

要求

  • Python 3.8 或更高版本,不支持 Python 2.x

  • 外部二进制文件

    • 王子XML:王子

    • PDFreactor: pdfreactor.py ,

    • Speedata 发布者:sp

    • 口径:电子书转换

    • WKHTMLTOPDF: wkhtmltopdf

    • Vivliostyle: vivliostyle-formatter

    • VersaType :通用型转换器

    • Weasyprint: weasyprint

    • 天线室:run.sh

    • Typeset.sh:typeset.sh.phar _

    • PageJS:pagedjs-cli

    必须在 $PATH 中。请参阅各个产品的安装文档。

安装

  • 使用以下命令创建 Python 3 虚拟环境:

    python3 -m venv pp.server
  • 安装 Produce & Publish 服务器:

    bin/pip install pp.server
  • 运行生产和发布服务器:

    bin/uvicorn pp.server.server:app
  • 或在gunicorn的控制下:

    bin/gunicorn pp.server.server:app -w 2 -k uvicorn.workers.UvicornWorker
  • 要在进程管理器circus的控制下运行 Produce & Publisher 服务器 ,请使用以下命令生成circusd.ini文件:

    bin/pp-server-templates
  • 并在后台启动它:

    bin/circusd circusd.ini  --daemon

转换器要求

对于 PDF 转换,相关的转换器二进制文件或脚本必须包含在服务器的$PATH中。

  • PrinceXML 的王子

  • pdfreactor用于 PDFreactor 8 或更高版本

  • 用于WKHTMLToPDF的 wkhtmltopdf

  • Calibre的电子书转换

  • 用于 Speedata Publisher 的sp

  • Vivliostyle格式化程序的 vivliostyle

  • Versatype用于 Versatype 转换器

  • 用于Weasyprint的 weasyprint

  • 天线室的天线室

  • 用于PagedJS的 pagedjs

  • 用于Typeset.sh的 typesetsh

API 文档

所有 API 方法都可通过 API URL 端点后的 REST api 获得:

http://host:port/<command>

使用默认服务器配置,这将转换为:

http://localhost:8000/convert

REST API 内省

pp.server基于 Python 的 FastAPI 框架实现。您可以通过以下方式直接访问 REST API 文档

http://localhost:8000/docs

环境变量

pp.server 默认使用安装目录的var文件夹作为转换数据的临时文件夹。 如果您需要不同的假脱机目录,请设置环境变量PP_SPOOL_DIRECTORY 。

如果您在 Docker 下运行 PDFreactor 10 或更高版本,则必须设置环境变量PP_PDFREACTOR_DOCKER=1以便为pdfreactor.py生成正确的file:///docs/... URI 。

PDF 转换 API

请记住,所有转换器都使用 HTML 或 XML 作为转换的输入。所有输入数据(HTML/XML、图像、样式表、字体等)都必须存储在 ZIP 存档中。内容的文件名必须命名为index.html

您必须数据发布到

http://host:port/convert

具有以下参数:

  • 数据- ZIP 存档(作为 base64 编码的字符串)

  • 转换器- 一个字符串,用于确定要使用的 PDF 转换器(princexmlpdfreactorphantomjsvivliostyleversatype或用于生成 EPUB 内容的calibre )

  • cmd_options - 添加到外部转换器调用的可选命令行参数字符串

回报:

API 将其结果作为 JSON 结构返回,其中包含以下键值对:

  • 状态- OKERROR

  • data - 生成的 PDF 文件编码为 base64 编码的字节字符串

  • output - 转换脚本(转换器运行的输出)

自省 API 方法

制作和发布服务器版本:

http://主机:端口/版本

返回:

{“版本”:“3.0.0”,“模块”:“pp.server”}

已安装/可用的转换器:

http://host:port/converters

返回:

{“pdfreactor”:真,“phantomjs”:假,“口径”:真,“王子”:真}

已安装转换器的版本:

http://host:port/converter-versions

返回:

{'prince': '版本 x.y', 'pdfreactor: '版本 abc', ...}

其他 API 方法

清理队列目录(删除超过 1 天的转化数据)

http://host:port/cleanup

返回:

{“directories_removed”:22}

源代码

https://bitbucket.org/ajung/pp.server

错误跟踪器

https://bitbucket.org/ajung/pp.server/issues

支持

目前仅在项目基础上提供对 Produce & Publish Server 的支持。

执照

pp.server在 GNU Public License V2 (GPL 2) 下发布。

接触

ZOPYX
Hundskapfklinge 33
D-72074 图宾根,德国
www.zopyx.com
www.produce-and-publish.info

3.2.0 (2020/05/12)

  • 添加了自测端点

3.1.0 (2020/03/20)

  • 各种小修复

  • available_converters() 现在并行执行 -> 加速

3.0.0 (2020/02/14)

  • 使用 FastAPI 作为 REST 后端完成重写

  • 更好的日志记录

  • 更改 API 名称

  • 放弃对 PhantomJS 和 Unoconv 的支持

  • 更好的错误处理

  • 简化配置以获得进一步的转换器支持

2.1.0 (2020/08/12)

  • 添加了对pagedjs-clitypeset.sh的支持

2.0.4 (2019/02/11)

  • var文件夹 gunicorn.log的小安装问题

  • 添加了可选的 PP_PDFREACTOR_DOCKER环境支持

2.0.3 (2019/02/11)

  • var文件夹 gunicorn.log的小安装问题

  • 添加了可选的 PP_SPOOL_DIRECTORY环境支持

2.0.0 (2018/07/14)

  • 大扫除

  • 删除了异步功能

  • 从女服务员变成了独角兽

  • 从 subprocess 切换到 easyprocess

  • 网页显示已安装的转换器及其版本

  • 添加了对 VersaType 转换器的支持

1.0.8 (2017/10/23)

  • 内部发布

1.0.7 (2017/08/17)

  • 修复了清理代码中的一个非常老的错误

1.0.6 (2017/08/08)

  • 在启动期间显示可用的转换器

1.0.5 (2017/04/06)

  • 支持 WeasyPrint

1.0.3 (2017/02/13)

  • 使用显式选项 -o 调用princexml(Prince 11 兼容性)

1.0.0 (2017/01/08)

  • 第一次正式发布

  • 需要 Python 3.5 或更高版本

0.7.13 (2016/08/30)

  • 添加了circus依赖项以提供开箱即用的守护进程支持

0.7.12 (2016/08/29)

  • 修复 PDFreactor 8

0.7.11 (2016/06/01)

  • 更新到金字塔 1.7

0.7.7 (2016/01/24)

  • 更新了对最新 Vivliostyle 格式化程序的支持

  • 添加了对 Antennahouse Formatter 的支持

0.7.6 (2015/11/30)

  • 支持 PDFreactor 8

0.7.5 (2015/11/18)

  • 修复了创建目录时的竞争条件

0.7.4 (2015/11/14)

  • 支持嵌套上传的 ZIP 文件

0.7.3 (2015/11/14)

  • 支持 Vivliostyle 格式化程序

0.7.2 (2015/04/20)

0.7.1 (2015/03/13)

  • runcmd() 中的 unicode 修复

0.7.0 (2015/02/15)

  • 0.6.x 完全被包装得很糟糕

  • 改变回购结构

0.6.1 (2015/02/02)

  • 将 /api/converter-versions 添加到 webservice API

0.6.0 (2015/01/26)

  • 放弃 Python 2.X 支持,Python 3.3 或更高版本现在是强制性要求

0.5.5 (2015/01/23)

  • UTF8 处理修复

0.5.3 (2014/11/23)

  • 支持 WKHTMLTOPDF

0.5.2 (2014/11/19)

  • 支持 Speedata Publisher

0.5.1 (2014/10/12)

  • 改进的错误处理

0.5.0 (2014/10/12)

  • 官方 Python 3.3/3.4 支持

0.4.7 (25.09.2014)

  • 修复了文档错误

0.4.6 (22.08.2014)

  • 删除了 PDFreactor –addlog 选项

0.4.5 (22.08.2014)

  • 向 pdfreactor 命令行调用添加了补充命令行选项

0.4.4 (24.01.2014)

  • 小错别字已修复

0.4.3 (20.01.2014)

  • 一天后实现自动队列清理

0.4.2 (18.01.2014)

  • 修复 index.pt 中与虚拟主机相关的 URL

0.4.1 (13.01.2014)

  • 在 index.pt 上显示 Python 版本和转换器

  • 添加了授权支持

0.4.0 (17.10.2013)

  • Python 3.3 支持

  • 金字塔 1.5 支持

0.3.5 (05.10.2013)

  • 在 pdf 和 unoconv API 方法中添加了“cmd_options”,用于为外部转换器指定任意命令行参数

0.3.4 (05.10.2013)

  • 添加了“清理”API

0.3.3 (05.10.2013)

  • 添加了“版本”和“转换器”API 方法

0.3.2 (04.10.2013)

  • 添加了使用Calibre进行 EPUB 转换的支持

0.3.1 (03.10.2013)

  • 更新的文档

0.3.0 (14.07.2013)

  • unoconv 转换现在返回 ZIP 存档(例如 HTML 文件 + 提取的图像)

0.2.7 (06.07.2013)

  • 添加了对 Phantom.js 转换器的支持

0.2.5 (05.07.2013)

  • 更好地检测 Prince 和 pdfreactor 二进制文件

0.2.2 (05.07.2013)

  • 更新了文档

  • 小清理

0.2.1 (04.07.2013)

  • 重新添加投票 API

0.2.0 (03.07.2013)

  • 将 XML-RPC api 转换为 REST api

0.1.9 (01.07.2013)

  • monkeypatch pyramid_xmlrpc.parse_xmlrpc_request 以绕过其愚蠢的 DOS 请求正文检查

0.1.7 (29.06.2013)

  • 更多测试

  • 修复

  • 更新的文档

0.1.5 (27.06.2013)

  • 测试同步操作

  • 修复

0.1.0 (24.06.2013)

  • 初始发行

项目详情