跳转到主要内容

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

项目描述

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

生产 & 发布服务器提供了使用以下外部PDF转换器将HTML/XML + 资源转换为PDF的Web服务API

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

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

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

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

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

  • VersaType Formatter (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

  • 外部二进制文件

    • PrinceXML: prince,

    • PDFreactor: pdfreactor.py,

    • Speedata Publisher: sp

    • Calibre: ebook-convert

    • WKHTMLTOPDF: wkhtmltopdf

    • Vivliostyle: vivliostyle-formatter

    • VersaType : versatype-converter

    • Weasyprint: weasyprint

    • Antennahouse: 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
  • 运行 Produce & Publish 服务器

    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 中。

  • prince 用于 PrinceXML

  • pdfreactor 用于 PDFreactor 8 或更高版本

  • wkhtmltopdf 用于 WKHTMLToPDF

  • ebook-convert 用于 Calibre

  • sp 用于 Speedata Publisher

  • vivliostyle 用于 Vivliostyle 格式化器

  • versatype 用于 Versatype 转换器

  • weasyprint 用于 Weasyprint

  • antennahouse 用于 Antennahouse

  • pagedjs 用于 PagedJS

  • typesetsh 用于 Typeset.sh

API 文档

所有 API 方法都可通过遵循 API URL 终端的 REST api 获取

http://host:port/<command>

默认服务器配置下,这表示为

https://#:8000/convert

REST API 概览

pp.server 基于 FastAPI 框架用 Python 实现。您可以直接通过

https://#:8000/docs

访问 REST API 文档

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

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

PDF 转换 API

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

您需要将数据 POST

http://host:port/convert

以下参数

  • data - ZIP 归档(作为 base64 编码字符串)

  • converter - 一个字符串,用于确定要使用的 PDF 转换器(可以是 princexmlpdfreactorphantomjsvivliostyleversatypecalibre 以生成 EPUB 内容)

  • cmd_options - 可选字符串,作为给定的外部转换器调用的命令行参数添加

返回

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

  • 状态 - 要么 OKERROR

  • 数据 - 生成的 PDF 文件,以 base64 编码的字节字符串形式编码

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

内省 API 方法

生产 & 发布服务器版本

http://host:port/version

返回

{“version”: “3.0.0”, “module”: “pp.server”}

已安装/可用的转换器

http://host:port/converters

返回

{“pdfreactor”: true, “phantomjs”: false, “calibre”: true, “prince”: true}

已安装转换器的版本

http://host:port/converter-versions

返回

{‘prince’: ‘Version x.y’, ‘pdfreactor: ‘Version a.b.c’, …}

其他 API 方法

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

http://host:port/cleanup

返回

{“directories_removed”: 22}

源代码

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

错误追踪器

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

支持

目前,生产 & 发布服务器的支持仅限于项目层面。

许可证

pp.server 根据 GNU 公共许可证 V2 (GPL 2) 发布。

联系

ZOPYX
Hundskapfklinge 33
D-72074 Tuebingen, Germany
www.zopyx.com
www.produce-and-publish.info

3.3.0 (2023/02/07)

  • 现代化的代码库

  • 现在需要 Python 3.9 或更高版本

  • 未添加新功能

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)

  • 主要清理

  • 删除了异步功能

  • 从 waitress 切换到 gunicorn

  • 从 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)

  • 更新到 Pyramid 1.7

0.7.7 (2016/01/24)

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

  • 添加了对 Antennahouse 格式化器的支持

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

  • 支持Pyramid 1.5

0.3.5 (05.10.2013)

  • 将“cmd_options”添加到pdf和unoconv API方法中,以便为外部转换器指定任意命令行参数

0.3.4 (05.10.2013)

  • 添加了“cleanup”API

0.3.3 (05.10.2013)

  • 添加了“version”和“converter”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)

  • 在pyramid_xmlrpc.parse_xmlrpc_request中monkeypatch,以绕过其愚蠢的DOS请求体检查

0.1.7 (29.06.2013)

  • 添加了更多测试

  • 修复了问题

  • 更新了文档

0.1.5 (27.06.2013)

  • 测试同步操作

  • 修复了问题

0.1.0 (24.06.2013)

  • 初始版本

项目详情


发布历史 发布通知 | RSS源

下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

pp.server-3.3.0.2.zip (1.1 MB 查看哈希值)

支持: