一个开源产品,用于Plone将用户看到的页面下载或作为PDF文件发送。
项目描述
简介
collective.sendaspdf 是一个开源产品,适用于 Plone,允许用户将所看到的页面下载为 PDF 文件。它还提供了一个表单,可以通过电子邮件发送页面(当前页面的 PDF 格式截图作为电子邮件的附件)。
它依赖于两个产品中的任何一个来生成 PDF 文件
xhtml2pdf: http://www.xhtml2pdf.com/
wkhtmltopdf: http://wkhtmltopdf.org/
网站管理员可以轻松选择他偏好的生成解决方案。
安装
要安装该包,您只需将 collective.sendaspdf 添加到您的 buildout 的 eggs 列表中。然后使用 Zope 的快速安装程序或 Plone 的附加产品管理器安装它。
要安装 xhtml2pdf,将以下内容添加到您的 buildout eggs 目录
pisa pyPdf html5lib reportlab
collective.sendaspdf 已与 pisa 和 html5lib 的开发版本进行了测试。在最新版本(撰写此 README 时 - html5lib 0.9 和 pisa 3.0.33)中,一些页面无法渲染。
要安装 wkhtmltopdf,转到项目页面并下载适用于您的操作系统的可执行版本。安装它,以确保命令 wkhtmltopdf 在 PATH 中。
您还可以更新您的 buildout,以自动下载和安装 wkhtmltopdf,并使其用于您的实例。这可能有点棘手。查看我们的 collective.sendaspdf buildout 了解如何操作。
如果 wkhtmltopdf 不在您的路径中,您可以在 buildout 配置中设置一个环境变量
[instance] ... zserver-threads = 7 environment-vars = ... WKHTMLTOPDF_PATH /path/to/your/wkhtmltopdf
此外,如配置中所示,zserver-threads 数量已增加到 7。这避免了在同时渲染多个 PDF 时线程锁定的问题。同时渲染 5 个相同页面的 PDF 时,7 个线程运行良好。
jquery.pyproxy 依赖项
我们将 jquery.pyproxy 作为依赖项。没有它也可以工作:我们默认不安装它。如果您自己安装,则发送或下载为 PDF 的链接将使用 AJAX,使交互更快、更用户友好。
配置
转到 Plone 控制面板。您将找到一个“发送为 PDF”链接,该链接将带您到产品配置页面。
此页面提出了一些设置,其中包括
用于渲染 PDF 文件的工具。
存储 PDF 文件的目录。
用作散列用户电子邮件的盐的句子(此散列用于知道用户可以访问哪些文件)
用于邮件中 PDF 文件的名称。
邮件的默认标题/正文。
不应提供附件名称的浏览器列表。Chrome 认为如果指定附件名称,该工具生成的 PDF 可能对计算机有害。将 Chrome 添加到此可避免收到警告。
对于 wkhtmltopdf 用户,还有两个额外选项可用
始终使用打印 CSS 来渲染 PDF。
为给定的一组对象使用打印 CSS。
xhtml2pdf 始终使用打印 CSS。
兼容性
此产品已在 Plone 3 和 Plone 4 上进行了测试。从版本 2.6 开始,我们将仅确保与 Plone 4 的兼容性,至少在测试中。
对于开发者
您可以在 collective/sendaspdf/tests/adapter.txt 中找到一些额外的文档。它解释了如何在使用请求或适配器时定义自定义选项。
测试
如果您想运行 sendaspdf 测试套件,您需要将“pdfminer”添加到 buildout 中 eggs 的列表中。
在Plone3上,这是我的运行测试的配置(似乎包不是必需的,因为egg来自zeoclient部分)
[test] recipe = collective.recipe.z2testrunner zope2part = zeoclient packages =
在Plone 4上
[test] recipe = zc.recipe.testrunner eggs = ${zeoclient:eggs} defaults = ['--auto-color', '--auto-progress'] environment = environment [environment] WKHTMLTOPDF_PATH=${wkhtmltopdf:location}/wkhtmltopdf
变更日志
3.0 (2015-06-24)
修复了wkhtmltopdf运行时间过长时终止的问题。[maurits]
添加升级步骤:将我们的控制面板动作放入产品(插件)类别。并给它一个合适的图标(Plone 3上的gif,Plone 4上的png)。在安装时默认设置为png,这样最适合Plone 4。对于portal_types中的工具图标也是同样的设置。[maurits]
修复了由于拼写错误导致的未定义的tinymce的javascript错误。注意,在Plone 4中我们目前无法加载TinyMCE。[maurits]
当发送邮件失败时发出警告。[maurits]
添加了重写https链接的选项。如果样式表或图片在pdf中不可见,这个选项可能有所帮助。这是整个页面源代码中https://的简单替换,所以我们可能替换了您不希望替换的内容。问题#19 [maurits]
修复超时问题,因为Popen kill方法从未被调用。[avoinea]
添加卸载配置文件,以便清理和轻松卸载此包。[avoinea]
在测试buildout中,使用wkhtmltopdf 0.12.2.1(OSX)或0.12.2(Linux)。我们的测试buildout在buildout目录内安装包时会进行一些古怪的操作。您可能只想手动为您的操作系统安装包。我们在Travis中这样做。我们正在遇到64位版本的问题,所以我们使用32位版本。[maurits, jean]
使其与wkhtmltopdf 0.12.0兼容,并在错误上改进了日志记录。[avoinea]
添加了禁用自动清理步骤的可能性。可以在plone控制面板中设置。默认为启用。[olimpiurob]
2.10 (2014-01-20)
将--encoding utf-8传递给wkhtmltopdf。修复了可能的编码错误。[jean]
2.9 (2013-09-27)
首先尝试从较新的xhtml2pdf库导入pisa。注意,对于这两个库以及它们的依赖项,找到适用于Python 2.4(Plone 3)的版本可能会有困难。通常推荐使用wkhtmltopdf。[maurits]
不再将所有内容转换为ascii为pisa。[maurits]
在调用html_to_pdf转换方法之前,在一点上进行可能的编码到utf-8。[maurits]
不再使用已弃用的clean_string从jquery.pyproxy中。[maurits]
当没有给出view_name时,不要尝试获取立即视图,而只是显示上下文。这将让标准的Zope和Plone机制完成其工作。当通过遍历到“视图”不起作用,尽管查看此url工作正常时也这样做。在某些情况下可能会发生这种情况。[maurits]
将代码移至https://github.com/zestsoftware/jquery.pyproxy [vincent, maurits]
2.8 (2012-11-01)
基于collective.polls配置为Travis添加了pep8/pyflakes检查。[vincent]
pep8/pyflakes [vincent + maurits]
添加了允许将身份验证cookie传递给wkhtmltopdf的选项。这修复了某些问题,其中图像隐藏在非公开文件夹中(尽管用户可以在正常页面上看到这些图像)。[vincent]
2.7.2 (2012-10-18)
修复了Python 2.4(Plone 3)中的异常语法。[vincent]
2.7.1 (2012-10-18)
修复了超时问题。[vincent]
2.7 (2012-10-17)
在临时文件生成中添加了一些随机数,以避免多个并发运行时的问题。[vincent]
在子进程中添加了超时,并将stdout/err放入TemporaryFile以避免潜在的问题。[vincent]
在默认buildout中提高了zserver-threads的数量,以防止服务器锁定。[vincent]
添加了基于collective/tutorial.todoapp的bootstrap/buildout(https://github.com/collective/tutorial.todoapp)。[vincent]
2.6 (2012-06-15)
更新了荷兰语翻译。[Thom van Ledden]
修复了生成带有锚点的本地URL的问题。[Davide Moro]
在update_relative_urls中修复了错误。[Davide Moro]
2.5 (2012-03-29)
修复了生成pdf名称的问题。[kroman0]
添加了添加生成PDF默认选项的适配器的可能性。适配器必须实现ISendAsPDFOptionsMaker。[vincent]
当使用wkhtmlaspdf生成文件时添加了布局选项。可用选项包括:使用书籍样式、生成目录、页边距。这些选项可以在下载链接中被覆盖。[vincent]
添加了替换相对URL并在img标签中包含图像数据的实用工具。[vincent]
启用了使用GET参数渲染目录和书籍样式的可能性。[vincent]
添加了意大利语翻译。[giacomos]
2.4.2 (2011-12-09)
修复了JS绑定下载PDF的bug,现在使用正确的上下文。[vincent]
修复了上下文标题包含非ASCII字符时的bug。Zope不接受set_header中的这些字符。[vincent+Vladislav]
2.4.1 (2011-12-07)
修复了在Plone 4中加载TinyMCE的bug。[vincent]
修复了在检查是否应提供附件名时的问题,“self.excluded_browser_attachment”似乎在所有实例上都不起作用,改用“self.getExcluded_browser_attachment()”。[vincent]
修复了Plone 4的测试运行器。[vincent]
2.4 (2011-11-22)
在“发送为PDF”工具中添加了一个设置,以便在强制文件名时排除某些浏览器。这主要用于Chrome,因为它认为使用该工具生成的PDF文件可能是有害文件。同样的问题也会出现在Chromium上。[vincent]
当下载页面时,显示基于上下文标题的文件名。[Giacomo Spettoli]
添加了一些功能测试。[vincent]
不再重复POST参数。[vincent]
2.3.1 (2011-06-27)
修复了与Unicode(再次)和Ajax相关的bug。[vincent]
2.3 (2011-05-25)
修复了未使用安全邮件主机时的bug。[Yuri]
修复了wk转换编码时的bug。[Khairil Yusof]
2.2 (2011-04-05)
修复了编码,以避免仅限于ASCII。[mauriziolupo]
为sendaspdftool和导入/导出首选项添加了通用的设置处理程序。[mauriziolupo]
2.1.1 (2010-12-23)
在链接上添加了一个目标(sic :/)属性,以便预览PDF,使其在新窗口中打开。这看起来很丑,但事实是,如果用户在安装了IE和Acrobat reader的情况下点击链接,它将在同一窗口中打开PDF。按“后退”按钮将显示没有Ajax表单的页面。[vincent]
在Ajax弹出窗口中,如果发生错误,我们不会尝试初始化tinymce。[vincent]
修复了另一个IE bug,这是由于多余的逗号和CSS不透明度修复。[vincent]
2.1 (2010-12-15)
还在表单上添加了meta标签robots:noindex。[vincent]
在下载的文件中添加了“X-Robots-Tag”:“noindex”头,以避免被搜索引擎索引。[vincent]
修复了使用TinyMCE提交Ajax表单时的bug。[vincent]
2.0.1 (2010-11-11)
修复了jquery.sendaspdf.js中的bug - 删除了一个导致IE中错误的逗号。[vincent]
2.0 (2010-10-22)
与Plone4的兼容性修复。[vincent]
添加了“下载为PDF”链接的Ajax版本。[vincent]
添加了“发送为PDF”链接的Ajax版本。[vincent]
删除了“-C”参数。[yuri + vincent]
1.1 (2010-09-16)
当页面发送邮件时PDF生成失败,我们显示错误页面而不是失败。[vincent]
在发送页面中修复了bug - 匿名用户无法加载Wysiwyg。从POI中窃取了一些代码来解决此问题。[vincent]
1.0.3 (2010-08-02)
修复了缺少文件的损坏发布版本。(现在与setuptools-git一起发布。)[mark]
1.0.2 (2010-08-02)
更新了setup.py中的egg信息(作者和描述)。[mark]
1.0.1 (2010-08-02)
翻译了“下载为PDF”操作。[mark]
注册了翻译,以便它们被应用。[mark]
1.0 (2010-07-21)
添加了荷兰语和法语翻译 [vincent+mark]
添加了通过邮件发送和下载页面的视图。[vincent]
添加了将页面通过邮件发送和下载为PDF的文档操作。[vincent]
添加了用于管理首选项的sendaspdf工具。[vincent]
项目详情
collective.sendaspdf-3.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a8fe6055d9a3afab6a1d31a95ee754ba8ee6e7c2a4a8a236eccd677d8805bcbb |
|
MD5 | b7e7fe18b1053cd748a5ba6a71e4894e |
|
BLAKE2b-256 | c6a10bb4e1f81cb6885e178f5c3da025ffcd308ab58f1652b858be34944eda15 |