跳转到主要内容

使用ImageMagick等外部工具进行SVG、PNG、PDF转换器

项目描述

Develop Master

简介

此包提供了使用ImageMagick转换图像和PDF文件的工具。它还提供了一个通用的/download.pdf浏览器视图,允许用户下载Plone页面作为带有自定义PDF封面、免责声明和封底的PDF文件(需要在服务器上安装wkhtmltopdf系统包)。

主要功能

  • 将Plone/Zope内容下载为PDF文件,带有自定义PDF封面、目录等;

  • 提供工具提取PDF封面为图像(使用PyPDF2ImageMagick);

  • 提供从PDF中提取元数据的工具(使用PyPDF2);

  • 提供更新PDF元数据的工具(使用PyPDF2)。

安装

入门

  1. 尝试http://localhost:8080/Plone/front-page/download.pdf

自定义输出PDF

封面

提供名为@@pdf.cover的自定义浏览器页面。

<browser:page
  for="my.package.interfaces.ICustomContent"
  name="pdf.cover"
  class=".app.pdfview.Cover"
  template="zpt/pdf.cover.pt"
  permission="zope2.View"
  />

免责声明

包含作者详情和版权的第一页,在PDF封面之后。提供名为@@pdf.cover的自定义浏览器页面。

<browser:page
  for="my.package.interfaces.ICustomContent"
  name="pdf.disclaimer"
  class=".app.pdfview.Disclaimer"
  template="zpt/pdf.disclaimer.pt"
  permission="zope2.View"
  />

主体

提供名为@@pdf.body的自定义浏览器页面。

<browser:page
  for="my.package.interfaces.ICustomContent"
  name="pdf.body"
  class=".app.pdfview.Body"
  template="zpt/pdf.body.pt"
  permission="zope2.View"
  />

封底

提供名为@@pdf.cover.back的自定义浏览器页面。

<browser:page
  for="my.package.interfaces.ICustomContent"
  name="pdf.cover.back"
  class=".app.pdfview.BackCover"
  template="zpt/pdf.cover.back.pt"
  permission="zope2.View"
  />

目录

要启用目录,提供一个名为@@pdf.toc的空浏览器页面。

<browser:page
  for="my.package.interfaces.ICustomContent"
  name="pdf.toc"
  template="zpt/pdf.toc.pt"
  permission="zope2.View"
  />

选项

对于PDF封面,您需要提供一个命名适配器,例如

<adapter
  name="pdf.cover"
  for=" my.package.interfaces.ICustomContent"
  provides="eea.converter.interfaces.IPDFOptionsMaker"
  factory=".adapters.CoverOptionsMaker" />

同样适用于PDF免责声明

<adapter
  name="pdf.disclaimer"
  for=" my.package.interfaces.ICustomContent"
  provides="eea.converter.interfaces.IPDFOptionsMaker"
  factory=".adapters.DisclaimerOptionsMaker" />

或者对于PDF封底

<adapter
  name="pdf.cover.back"
  for=" my.package.interfaces.ICustomContent"
  provides="eea.converter.interfaces.IPDFOptionsMaker"
  factory=".adapters.BackCoverOptionsMaker" />

对于PDF主体,您需要提供一个命名适配器,例如

<adapter
  name="pdf.body"
  for=" my.package.interfaces.ICustomContent"
  provides="eea.converter.interfaces.IPDFOptionsMaker"
  factory=".adapters.BodyOptionsMaker" />

对于全局PDF选项,提供一个无名称适配器,例如

<adapter
  for=" my.package.interfaces.ICustomContent"
  provides="eea.converter.interfaces.IPDFOptionsMaker"
  factory=".adapters.OptionsMaker" />

还可以添加自定义的print.css以满足您的需求。更多信息请参阅eea.pdf

限制访问和异步

为了限制对/download.pdf的访问,您需要提供一个名为pdf.support的多适配器,并具有名为can_download的方法。例如:

<browser:page
  name="pdf.support"
  for="zope.interface.Interface"
  class=".support.Support"
  permission="zope.Public"
  allowed_interface="eea.converter.interfaces.ISupport"
  />

同样适用于异步下载,定义一个名为async的方法。在eea.converter.browser.app.support中查看默认实现,或在buildout.cfg中添加一个名为EEACONVERTER_ASYNC的环境变量。

[instance]
...
environment-vars =
  EEACONVERTER_ASYNC True

内容规则

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

导出成功

通知请求PDF/ePub导出的个人,文档已成功导出,并提供可下载文件的链接。

导出失败

通知请求PDF/ePub导出的个人,导出失败。

导出失败(管理员)

通知管理员在导出PDF/ePub时出现了问题。

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

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

${download_came_from_url}

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

${download_email}

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

${download_error}

下载PDF/ePub作业失败时的错误跟踪信息

${download_from_email}

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

${download_from_name}

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

${download_title}

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

${download_url}

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

${download_type}

下载类型:PDF/ePub

依赖项

  • ImageMagick (6.3.7+)

    yum install ImageMagick
    apt-get install imagemagick
  • rsvg-convert (2.40.16+)

    yum install rsvg-convert
    apt-get install librsvg2-bin

源代码

最新源代码(Zope 2兼容)

文档

请查看此包中的doc目录。

资金

EEA - 欧洲环境局(欧盟)

变更日志

12.9 - (2020-03-31)

  • 错误修复:使用从pdf解析得到的标题而不是来自pypdf2 getDocumentInfo方法的标题,因为该方法在解析pdf获取其元数据时将标题中的mdash错误编码[ichim-david refs #116365]

12.8 - (2019-10-11)

  • 功能:支持SVG图像转换的缩放级别和宽高比[avoinea refs #109515]

12.7 - (2019-01-28)

  • Jenkins:添加sonarqube步骤[avoinea refs #101552]

12.6 - (2019-01-17)

  • 更改:恢复封面颜色空间为sRGB[avoinea refs #101483]

12.5 - (2018-12-05)

  • 更改:更新封面颜色空间为CMYK以与ghostscript 9.26+兼容[avoinea refs #99812]

12.4 - (2018-08-28)

  • 功能:使用rsvg-convert将SVG转换为PNG,或者回退到ImageMagick[avoinea refs #97843]

12.3 - (2018-08-22)

  • 更改:更新到wkhtmltopdf 0.12.4(添加—-disable-smart-shrinking选项)[avoinea refs #97586]

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

  • 更改:修复在Plone 4.3.17上运行的测试[alecghica refs #96974]

12.2 - (2018-04-20)

  • 更改:在AsyncInfo包装器内分组下载信息[avoinea]

12.1 - (2017-12-12)

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

12.0 - (2017-11-07)

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

  • 更改:改进了日志[alecghica refs #88578]

11.9 - (2017-06-26)

  • 更改:删除对plone.stringinterp的硬依赖[avoinea]

  • 错误修复:修复了imagemagick convert命令,添加了颜色空间参数和页码参数[zoltan_andras refs #85638]

11.8 - (2017-05-22)

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

11.7 - (2017-05-15)

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

11.6 - (2017-05-08)

  • 更改:如果我们在collection.pdf.body中打印,则删除pdf.header标题值,因为打印多页会导致错误标题,因为一旦我们打印下一个对象[ichim-david refs #84084]

11.5 - (2017-04-24)

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

11.4 - (2017-03-20)

  • 错误修复:修复了pdf.footer和pdf.header标题的编码问题,当子页面有需要转义的内容时[ichim-david refs #80861]

11.3 - (2017-01-17)

  • 错误修复:删除了v11.2中引入的CMFPlone硬依赖[avoinea]

11.2 - (2017-01-17)

  • 功能:在PDF目录中的“目录”处添加了国际化[irina-botez]

11.1 - (2016-11-07)

  • 功能:将pdf_custom_fixes添加到pdf.toc.pt中,以防此模板需要自定义CSS修复[ichim-david refs #78802]

11.0 - (2016-10-14)

  • 更改:更改了pdf.toc标题的样式[ichim-david refs #77476]

10.9 - (2016-10-06)

  • 错误修复:修复了版本10.8中引入的关于此包定义的custom Content-Rules字符串替换的回归错误[voineali refs #77581]

10.8 - (2016-10-03)

  • 更改:使用来自plone.stringinterp的IContextWrapper而不是自定义的IContextWrapper[avoinea]

10.7 - (2016-05-19)

  • 更改:修复了PyLint警告和错误[ichim-david refs #71940]

10.6 - (2016-03-31)

  • 清理:清理了pdftk特定代码[avoinea]

  • 错误修复:如果EEACONVERTER_TEMP未设置,则警告并回退到CLIENT_HOME/tmp而不是崩溃整个应用程序[avoinea]

10.5 - (2016-02-15)

  • 错误修复:在“目录”部分中,避免文本分页[danielm-gh refs #67840]

10.4 - (2016-02-03)

  • 错误修复:在“目录”部分,文本(国家名称)没有在页面之间分割 [danielm-gh 参考 #67840]

10.3 - (2015-12-11)

  • 更改:修复了wkhtmltox对centos的依赖 [voineali 参考 #31324]

10.2 - (2015-12-07)

  • 更改:在setup.py中添加了系统依赖项 [voineali 参考 #27406]

10.1 - (2015-10-22)

  • 错误修复:添加-flatten选项以修复#28943。它防止透明覆盖 [lucas 参考 #28943]

10.0 - (2015-09-10)

  • 功能:添加了更新PDF元数据的工具。从eea.reports迁移 [voineali 参考 #28522]

  • 功能:添加了从PDF中提取元数据的工具。从eea.reports迁移 [voineali 参考 #28522]

  • 功能:添加了从PDF中提取封面图片的工具。从eea.reports迁移 [voineali 参考 #28522]

  • 更改:删除了pdftk依赖,并使用纯Python PyPDF2包 [voineali 参考 #28522]

9.6 - (2015-08-18)

  • 更改:添加了pdf_custom_fixes.css,由pdf.header和pdf.footer加载,以便在需要快速修复时使用 [ichimdav 参考 #27537]

  • 错误修复:当用于指标时,修复了pdf.footer标题和页码 [ichimdav 参考 #27537]

9.5 - (2015-07-28)

  • 更改:修改了pdf.toc.pt样式,以避免在输出列表项时出现页面中断 [ichimdav 参考 #27475]

  • 错误修复:更新导出的PDF/ePub文件的修改时间,以便清理cron-job知道不要删除最近请求的PDFs/ePubs文件。 [voineali 参考 #27513]

9.4 - (2015-05-26)

  • 错误修复:为了保持向后兼容性,将作业保持在wk.py中 [voineali 参考 #25755]

9.3 - (2015-05-05)

  • 更改:更改了脚注和页眉模板,以便在使用静态脚注和页眉时保留模板逻辑 [ichimdav 参考 #23904]

9.2 - (2015-04-02)

  • 功能:添加了限制在目录中出现的页眉标签的可能性 [ichimdav 参考 #24351]

9.1 - (2015-03-17)

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

  • 更改:更改了jenkins构建安装脚本的fetch url,将其更改为主EEA CPB存储库中的安装脚本 [olimpiurob 参考 #22402]

9.0 - (2015-02-25)

  • 错误修复:修复了download.pdf模板中的UnicodeDecodeError [voineali 参考 #23338]

  • 清理:从download.pdf中删除了过时的 make_pdf_cover [voineali 参考 #22971]

  • 更改:将异步API从eea.pdf移动到eeaconverter,以便在其他异步作业(例如eeaePub)中重用 [voineali 参考 #22971]

8.7 - (2015-02-16)

  • 功能:更新ISupport API,包括异步和电子邮件方法 [voineali 参考 #22971]

  • 功能:添加了在导出PDF正文时使用特定ZPT宏的可能性(例如content-core) [voineali 参考 #22686]

8.6 - (2014-12-23)

  • 错误修复:使用with语句与临时文件一起使用,以确保在退出之前安全关闭它们 [voineali 参考 #22080]

  • 错误修复:在创建身份验证cookie-jar时,也要注意CDN资源 [voineali 参考 #22080]

8.5 - (2014-12-02)

  • 错误修复:通过使用os.env EEACONVERTER_TEMP定义共享临时目录,添加了定义共享临时目录的可能性,以避免在使用zc.async时出现意外 [voineali 参考 #21958]

8.4 - (2014-11-28)

  • 错误修复:使用比–cookie更稳定的–cookie-jar选项来修复使用wkhtmltopdf打印集合页眉/页脚时的重复cookie。这也修复了在之前版本中引入的PDF开头出现的空白页 [voineali 参考 #21958]

8.3 - (2014-11-20)

  • 错误修复:修复了目录页面对齐 [voineali 参考 #21628]

  • 错误修复:修复了打印集合页眉/页脚时的重复cookie [voineali 参考 #21628]

8.2 - (2014-10-15)

  • 错误修复:防止随机wkhtmltopdf段错误,并重试3次以重新生成PDF [voineali 参考 #21149]

8.1 - (2014-10-01)

  • 更改:使用包名称:eeaconverter对临时文件进行前缀 [voineali 参考 #21100]

8.0 - (2014-09-15)

  • 功能:可以在安全模式(默认)或非安全模式(引发所有错误)中运行PDF转换作业 [voineali 参考 #20845]

  • 更改:更改了download.pdf API,以便允许异步作业使用dry-run [voineali 参考 #20843]

  • 更改:使@@pdf.support/can_download可通过URL访问 [voineali 参考 #20846]

7.1 - (2014-08-12)

  • 错误修复:对齐PDF目录表尾的虚线与页码 [voineali 参考 #20431]

  • 错误修复:修复了长PDF页眉和页脚文本,并根据页码的奇偶性左对齐或右对齐 [voineali 参考 #20431]

  • 功能:添加了i18n翻译 [voineali 参考 #20431]

  • 功能:添加了避免在描述中截断句子的可能性 [voineali 参考 #20456]

  • 特性:默认在PDF导出中启用JavaScript。[voineali 引用 #20459]

  • 特性:添加了API以限制对download.pdf的访问。[voineali 引用 #20436]

7.0 - (2014-07-15)

  • 特性:添加了目录支持。[voineali 引用 #20268]

  • 清理:移除collective.sendaspdf依赖。[voineali 引用 #20268]

6.8 - (2014-06-06)

  • 特性:添加了PDF封底支持。[voineali 引用 #19882]

  • 特性:添加了PDF免责声明支持(封面后第一页包含作者详情和版权信息)[voineali 引用 #19882]

6.7 - (2014-03-10)

  • 错误修复:不要在PDF封面添加目录。[voineali 引用 #18630]

  • 变更:为了解决wkhtmltopdf 0.12的问题,在header pdf模板中传递doctype以插入头信息。[ichim-david 引用 #18550]

6.6 - (2014-01-21)

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

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

6.5 - (2013-10-22)

  • 错误修复:将PDF转换为图像时返回第一页;重构封面[simiamih 引用 #16799]

6.4 - (2013-10-07)

  • 特性:添加了根据字符数截断文本的实用方法,不会在末尾切断单词[voineali 引用 #16946]

  • 特性:添加了将相对URL转换为绝对URL的实用方法[voineali 引用 #16946]

6.3 - (2013-10-04)

  • 错误修复:修复了PDF封面请求未发布文档凭据的问题[voineali 引用 #14904]

  • 特性:添加了自定义PDF html-header和html-footer,以便轻松自定义(只需为您的上下文覆盖@@pdf.header和@@pdf.footer即可)[voineali 引用 #16802]

6.2 - (2013-09-23)

  • 特性:使用自定义封面导出HTML到PDF(需要collective.sendaspdf)[voineali 引用 #14904]

6.1 - (2013-02-25)

  • 特性:添加了贡献者信息[ciobabog 引用 #13892]

  • 为Popen的close_fds参数添加Windows支持[erral #1]

6.0 - (2012-10-08)

  • 修复了依赖项,清理并使包在干净的Zope上运行[ghicaale #5426]

1.1 - (2012-06-12)

  • 添加水印工具[szabozo0]

1.0 - (2012-03-05)

  • 首次发布[voineali]

项目详情


下载文件

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

源代码分发

eea.converter-12.9.zip (427.1 kB 查看哈希值

上传时间 源代码

由以下提供支持

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页面