跳转到主要内容

将Plone内容发布为epub格式

项目描述

Develop Master

一个产品,允许您将epub文件导入到Plone中。

内容

简介

EEA Epub产品允许您将Plone epub文件导入。上传时,Epub内容将作为Plone文件夹、文件、图片和文档导入。

也支持导出为Epub格式。

截至版本4.3,使用Adobe InDesign CS4Sigil创建的epub文件经过测试,已知与此包兼容,此包的先前版本仅支持使用InDesign创建的epubs。

主要功能

EEA Epub功能

  1. 将epub文件作为Plone内容导入。

  2. 将原始epub存储在主文件夹中以方便检索。

  3. 将Plone内容导出为epub。

  4. 在导入epub时,文件名干净,且包含Plone ID不允许的字符。此行为默认开启,但可以通过在portal_properties/site_properties中取消选中布尔标志clean_epub_file_names来禁用。如果您发现Epub进程添加的文档页面有损坏的链接,请尝试不使用此布尔标志重新上传。

  5. 可以通过在上下文中添加名为‘action-download-epub’的项来临时禁用动态epub创建。

  6. 异步生成epub文件,并在epub准备好时通过电子邮件通知用户。

epub兼容性

EEA Epub对加载的epub做出以下假设

  1. 您不会在epub名称、图片或链接中使用unicode或其他特殊字符

  2. 您使用“Adobe InDesign CS4”或“Sigil”创建了epub,后者使用以下标准

    • 目录名为toc.ncx,位于OEBPS内部

    • 书籍文本和图片放置在OEBPS文件夹或OEBPS的子文件夹中

    • 项ID不包含以下字符 . /(如果可能,请坚持使用字母、数字和 - _)

创建epub的最佳实践

  1. 章节名称不应全部为大写或使用特殊字符

  2. 图片名称不应包含空格、句点、/ 或其他特殊字符

调试

目前,网站上的任何错误都会被抑制为info消息。

如果您想查看详细的错误,请检查Plone实例日志,通常位于buildout-folder/var/log。

安装

要使用此包在Plone 4中获得eea.epub支持,最简单的方法是与基于zc.buildout的安装一起工作。其他类型的安装也可能可行,但可能有些棘手。

要开始,您只需将包添加到您的eggszcml部分,运行buildout,重新启动您的Plone实例,并使用快速安装器或通过“Site Setup”中的“Add-on Products”部分安装eea.epub包。

[instance]
eggs =
    eea.epub

zcml =
    eea.epub

您可以在以下位置下载示例buildout:

https://github.com/eea/eea.epub/tree/master/buildouts/plone4

异步设置

默认情况下,所有epubs都不会异步生成。您需要安装eea.pdf才能启用异步下载,或者您可以为os环境提供名为EEACONVERTER_ASYNC的值。

为此,您在buildout中还需要进行一些额外的配置。

首先,您需要有一个用于存储生成的epub文件的文件夹。为此,您可以在buildout中手动创建它:directory/var/,或者您可以让buildout处理它

[buildout]

parts +=
    media-downloads
    media-downloads-temp

media-downloads-path = ${buildout:directory}/var/downloads/pdf
media-downloads-temp = ${buildout:directory}/var/downloads/tmp

[media-downloads]
recipe = ore.recipe.fs:mkdir
path = ${buildout:media-downloads-path}
mode = 0700
createpath = true

[media-downloads-temp]
recipe = ore.recipe.fs:mkdir
path = ${buildout:media-downloads-temp}
mode = 0700
createpath = true

这将在buildout:directory/var/中创建一个名为downloads的文件夹

接下来,为了使此文件夹对您的网站可见,并使用户能够下载生成的epubs,您需要将有关该文件夹的信息告知zope实例

[buildout]

media-downloads-name = downloads
media-downloads-path = ${buildout:directory}/var/downloads/pdf
media-downloads-temp = ${buildout:directory}/var/downloads/tmp

[instance]

environment-vars +=
  EEADOWNLOADS_NAME ${buildout:media-downloads-name}
  EEADOWNLOADS_PATH ${buildout:media-downloads-path}
  EEACONVERTER_TEMP ${buildout:media-downloads-temp}
  EEACONVERTER_ASYNC True

此外,别忘了设置plone.app.async

[buildout]

[instance]
eggs +=
    plone.app.async
zcml +=
    plone.app.async-single_db_worker

入门

导入

从“添加新”菜单选择“EpubFile”并上传epub文件。

导出

转到主页并点击页面底部的“下载为ePub”图标

或直接访问https://127.0.0.1:8080/Plone/front-page/download.epub

自定义权限

此包添加的自定义权限

可以下载ePub (eea.epub.download)

将此权限分配给您想要能够下载内容为ePub的角色,默认为所有者、经理、编辑

可以自定义ePub (eea.epub.customize)

将此权限分配给您想要能够上下文自定义输出ePub外观和感觉的角色,默认为经理、网站管理员

内容规则

此包使用Plone内容规则通过电子邮件通知用户异步ePub作业完成。因此,将在Plone > 网站设置 > 内容规则中添加3个自定义内容规则

ePub导出成功

通知请求ePub导出的个人ePub导出成功,并提供可下载的ePub链接

ePub导出失败

通知请求ePub导出的个人ePub导出失败

ePub导出失败(管理员)

通知管理员在导出ePub时出现问题时

内容规则电子邮件字符串替换

为了能够轻松自定义此包发送的电子邮件,可以进行以下自定义电子邮件模板字符串替换

${download_came_from_url}

作为ePub下载的Plone对象的绝对URL

${download_email}

触发下载为ePub操作的用户的电子邮件地址

${download_error}

下载为ePub作业失败时的错误跟踪

${download_from_email}

通过Plone > 网站设置 > 邮件可自定义网站管理员电子邮件地址

${download_from_name}

通过Plone > 网站设置 > 邮件可自定义网站管理员姓名

${download_title}

作为ePub下载的Plone对象的标题

${download_url}

生成的输出ePub可以下载的绝对URL

${download_type}

下载类型。默认为此包的EPUB。它是特定于包的,可以是EPUB、PDF等。

禁用ePub导出

您有通过在名为action-download-epub的上下文中添加静态ePub文件(或Python脚本、页面模板等)来暂时上下文禁用动态ePub导出的可能性。这样,/download.epub将返回此文件,而不是基于上下文数据生成一个。

内容规则

此包使用Plone内容规则通过电子邮件通知用户异步ePub作业完成。因此,将在Plone > 网站设置 > 内容规则中添加3个自定义内容规则

故障排除

使用并行zc.async队列配额异步生成ePub文件。将并行生成ePUBs的工作者数量将自动根据注册到plone.app.async-*_db_worker的zeo客户端数量计算。

由于每个db_worker可以同时处理最多3个作业(在zc.async代理中硬编码),如果您有2个工作者,则同时生成的最大ePub文件数将是6(2个工作者 * 3)。如果您有5个,您将同时生成15个ePub文件

如果您不希望它们同时生成,可以在buildout中设置环境变量EEAEPUB_ASYNC_THREADS1

[buildout]

...

[instance]

...

environment-vars +=
    EEAEPUB_ASYNC_THREADS 1

另外,如果您因为同时有太多的ePub作业而遇到问题,您可以像上面那样限制它们。

依赖项

  1. BeautifulSoup

  2. Lxml

  3. Plone 4.x

  4. plone.app.async

  5. eea.converter

  6. eea.downloads

  7. eea.pdf(用于高级主题和异步下载,可选)

实时演示

以下是一些EEA(欧洲环境局)的现场生产演示

  1. https://www.eea.europa.eu/soer/synthesis

源代码

最新源代码(与Plone 4兼容)

https://github.com/eea/eea.epub

与Plone 2和3兼容

https://github.com/eea/eea.epub/tree/plone25

资助

EEA - 欧洲环境局(欧盟)

变更日志

7.4 - (2018-09-06)

  • 更改:添加了卸载配置文件 [avoinea refs #96114]

  • 更改:更新了指向 eea.europa.eu 的 URL,使用 https:// [alecghica refs #95849]

  • 更改:修复了 BeautifulSoup 的使用 [alecghica refs #96974]

7.3 - (2018-05-25)

  • 错误修复:加快反向引用的缓存失效速度 [avoinea refs #95020]

7.2 - (2018-04-24)

  • 更改:使 zc.async 日志在 ePub 下载方面不那么冗长 [avoinea]

7.1 - (2017-12-12)

  • 更改:用 eeacms/plone-test:4 zptlint 替换 eeacms/zptlint [avoinea refs #90415]

7.0 - (2017-11-07)

  • 更改:删除了 Sphinx 生成的文档 [petchesi-iulian refs #88212]

6.9 - (2017-05-22)

  • 更改:并行运行异步 ePub 任务 [avoinea refs #84915]

  • 更改:修复了 PyLint 警告和错误 [valipod refs #84949]

6.8 - (2017-05-15)

  • 更改:修复了 PyLint 警告和错误 [eduard-fironda refs #84949]

6.7 - (2017-04-24)

  • 更改:更新了包信息 [eduard-fironda]

6.6 - (2016-10-03)

  • 更改:更新到使用 plone.stringinterp IContextWrapper 适配器 [avoinea]

6.5 - (2016-05-19)

  • 错误修复:修复了 pylint 警告 [chiridra refs #71940]

6.4 - (2016-05-04)

  • 更改:更新 eea.translations 以包含最新的翻译字符串 - 修复了模板中的错误 [chiridra refs #69753]

6.3 - (2015-08-18)

  • 更改:自动在 plone 上下文中包含 zcml,以便在不将此包添加到 buildout zcml 指令的情况下使此包工作。 [avoinea]

6.2 - (2015-03-17)

  • 更改:在 Jenkins 构建安装脚本中切换到 curl [olimpiurob refs #22402]

  • 更改:更改 Jenkins 构建安装脚本的获取 URL,以使用主 EEA CPB 存储库中的安装脚本 [olimpiurob refs #22402]

  • 错误修复:添加了一种方法,即使异步工作进程已关闭或队列太忙,也可以知道 ePub 是否正在生成。 [voineali refs #23411]

6.1 - (2015-02-27)

  • 错误修复:修复了导出 ePub 的验证错误(epubchecker) [avoinea]

6.0 - (2015-02-25)

  • 升级步骤:I. 在“Plone > 站点设置 > 扩展”中安装“EEA Converter”。II. 在 Plone > 站点设置 > 内容规则 中:1. 通过 异步 PDF 导出(失败)异步 PDF 导出(成功) 过滤 2. 禁用找到的规则 3. 通过 异步导出(失败)异步导出(成功) 过滤 4. 通过将 PDF 更改为 ${download_type} 更新这些规则的 电子邮件文本,以使用之前禁用的(PDF)规则 5. 删除与 异步 PDF 导出(失败)异步 PDF 导出(成功) 相关的规则 [voineali refs #22971]

  • 功能:添加了异步下载文档为 ePub 的可能性 [voineali refs #22971]

  • 错误修复:修复了下载.epub 模板中的 UnicodeDecodeError [voineali refs #23338]

5.9 - (2015-02-16)

  • 功能:添加了在上下文中添加回退 ePub 文件的可能性,该上下文称为 action-download-epub,以暂时停止动态 ePub 生成并静态返回此项目。 [voineali refs #22970]

5.8 - (2015-02-03)

  • 功能:在 export_actions 类别中添加了“下载为 ePub”操作 [voineali refs #22686]

5.7 - (2014-09-15)

  • 更改:使 @@epub.support/can_download 可从 URL 访问 [voineali refs #20846]

5.6 - (2014-08-12)

  • 错误修复:修复了测试 [ghicaale refs #20451]

5.5 - (2014-08-12)

  • 升级步骤:将“可以下载 ePub”权限分配给 CommonEditor

  • 升级步骤:在“Plone > 站点设置 > 扩展”中单击 eea.epub 可用的升级按钮

  • 更改:将 epub_view 重命名为 download.epub [voineali refs #20393]

  • 功能:添加了“可以下载 ePub”和“可以自定义 ePub”权限 [voineali refs #20436]

5.4 - (2014-07-15)

  • 错误修复:即使没有为内容类型设置 PDF 封面,也导出到 epub [voineali refs #20268]

  • 更改:删除了 collective.sendaspdf 依赖关系 [voineali refs #20268]

5.3 - (2014-06-06)

  • 升级步骤:在“Plone > 站点设置 > 扩展”中单击 eea.epub 可用的升级按钮 [voineali refs #19882]

  • 变更:将EPUB相关图片和操作从eea.soercontent包移动 [voineali 引用 #19882]

5.2 - (2014-01-21)

  • 特性:添加Sphinx生成的文档,格式为Page Template [batradav 引用 #9502]

  • 错误修复:从README.rst中删除了错误添加的引用块 [ichim-david 引用 #18064]

  • 错误修复:更新了指向Trac的旧URL [ghicaale 引用 #18003]

5.1 - (2013-11-20)

  • 错误修复:链接缺少任何样式 [simiamih 引用 #16799]

5.0 - (2013-10-22)

  • 特性:改进了epub - daviz引用、目录、样式和封面 [simiamih 引用 #16799]

4.9 - (2013-10-07)

  • 特性:主要导出改进 - 图像文件、封面照片、CSS [simiamih 引用 #16799]

4.8 - (2013-10-04)

  • 变更:更新了zope导入,以支持eea.epub所需的最低Plone 4.1版本 [ichimdav 引用 #15651]

4.7 - (2013-06-17)

  • 变更:使用BeautifulSoup4代替已弃用的BS 3 [tiberich #14584]

4.6 - (2013-01-15)

  • 升级步骤:在“Plone > 网站设置 > 扩展”中,点击eea.epub可用的升级按钮 [ichimdav #9068]

  • 特性:注册epubs为application/epub+zip MIME类型 [ichimdav #9068]

4.5 - (2012-11-22)

  • 升级步骤:在“Plone > 网站设置 > 扩展”中,点击eea.epub可用的升级按钮 [ichimdav #3621]

  • 特性:在创建Plone内容时使用文件名ID,如果启用clean_epub_filename布尔属性,则在文件名ID包含非法字符时清理它 [ichimdav #3621]

4.4 - (2012-06-12)

  • 错误修复:修复了HISTORY.txt文件的标记 [ciobabog 引用 #5231]

  • 变更:修改eea.epub中的代码以修复翻译问题 [prospchr 引用 #5159]

4.3 - (2012-04-26)

  • 特性:导入由Adobe InDesign以外的程序创建的epubs,这些epubs的图像和HTML页面位于单独的文件夹中,类似于由Sigil创建的 [ichimdav #5054]

4.2 - (2012-02-06)

  • 无更改

4.1 - (2012-02-06)

  • 错误修复:在setup.py中添加了依赖项 [voineali]

4.0 - (2011-11-06)

  • 错误修复:使用HTML解析器而不是XML解析器正确解析HTML实体 [ichimdav #4523]

  • 错误修复:清理了定义为 &nbsp 的空格,这些空格不能作为XML读取 [ichimdav #4271]

  • 清理:修复了所有pylint、pyflakes违规行为 [voineali #4121]

  • 特性:添加了升级步骤 [voineali @4392]

  • 特性:Plone 4.0.4兼容版本 [tiberich #4121]

0.6 - (2011-04-07)

  • 错误修复:清理epub导入以防止导航组件表现不佳 [ichimdav #4242]

  • 错误修复:修复了#4242,移除/清理,epub和目录组件,我们可以使用标准的Plone导航 [demarant]

  • 特性:强制在标题更改后不重命名文档/章节 [demarant]

0.5 - (2011-03-17)

  • 错误修复:修复了跨越段落的错误锚点 [ichimdav #4196]

  • 错误修复:向ZCML文件添加了翻译域 [voineali #4139]

0.4 - (2011-03-09)

  • 变更:清理了测试,添加了文档类型,修复了pylint违规警告 [ichimdav #4140]

0.3 - (2011-03-01)

  • 变更:抑制错误消息,显示为信息状态消息 [ichimdav #3883]

  • 错误修复:修复了epub文件导入 [ichimdav #3883]

0.2 - (2010-10-29)

  • 特性:添加到文件夹菜单项 [thuliper #3627]

  • 错误修复:修复了图像链接 [thuliper #3711]

0.1 - (2010-10-11)

  • 初始版本

项目详情


下载文件

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

源代码分发

eea.epub-7.4.zip (483.9 kB 查看哈希值)

上传时间

由以下支持