Hacklog Down As PDF——将wordpress日志作为pdf文档下载的插件(更新到2.3.6)

The story

话说那天在一个网站看到了将博文作为pdf文档下载的功能,觉得是个不错的东东。查看了下源代码,发现此博并不是用插件实现的。于是到网上搜索了下,发现此类插件有好多。一口气从网上下载了9个,一个一个测试,最后,没有一个合我口味。有的甚至根本不支持中文。没戏。
只好自己动手,丰衣足食了。哈哈,还是毛主席说得好啊。 :mrgreen:
这次做的这个插件名字叫:down as PDF 现更名为Hacklog Down As PDF
功能:为你的每篇日志添加一个“下载PDF文档”的链接,点击即可下载文章的PDF文档。
欢迎大家测试和反馈BUG。

请使用二进制模式 进行 FTP 传输!

说明

如要控制只允许注册用户下载,则把generate.php 第110-113行修改一下即可。
如要在日志编辑页面控制此日志是否允许下载为pdf,编辑down-as-pdf.php修改

1
private static $allow_down_default = 1;

1
private static $allow_down_default = 0;

即可。
不要说为什么不在后台设置一个选项来控制这些,是的,在后台加个选项用起来是方便多了,可是,这需要时间。目前我有很多事情要做,维护这个插件是用额外的时间来做的。

INTRO

插件详情:

*Name: down as PDF
*Description:此插件的功能是为你的每篇日志添加一个“下载PDF文档”的链接,点击即可下载文章的PDF文档。你可以将wp-content/plugins/down-as-pdf/images/目录下面的logo.png文件替换成你自己网站的logo。This plugin generates PDF documents for visitors when you click the “Download as PDF” button below the post. Very useful if you plan to share your posts in PDF format.You can replace the logo file logo.pngunder wp-content/plugins/down-as-pdf/images/ with your own.
* Version: 2.1
* Last Updated: 2011-7-5
* Requires WordPress Version: 2.8.2 or higher
* Compatible up to: 3.2

插件下载:本站下载

生成PDF测试: 未注册用户请到 http://ihacklog.com/?p=4579 测试 。
TODO:

  1. 添加自定义字体功能(ttf)
  2. 同一IP在某时间段内不能重复下载
  3. 字体颜色 可配置
  4. 后台增加自定义LOGO功能

change log:

2.3.6
* 更新TCPDF 库到 5.9.172

2.3.4
* use writeHTMLCell other than MultiCell (fixed the bug that can not correctly print copyright info in version 2.3.3)
* add auto make cache dir feature
* upated TCPDF lib to version 5.9.153
* correct the plugin name in readme.txt

2012/01/04
2.3.1
默认取消了这个功能(2.3.0选择YES那个),如果需要实现,编辑down-as-pdf.php修改

1
private static $allow_down_default = 1;

1
private static $allow_down_default = 0;

即可。因为考虑到大多数人并不是想每一篇日志都编辑一次保存这么个选项。

2.3.0
默认不允许下载,需要在日志编辑页面要右侧选择YES方可下载。还有,可以在日志中加入

1
[pdf_here]

来控制下载按钮的显示位置。

2011/12/31
2.2.3
禁用磁盘缓存,因为启用此选项将会使处理一篇日志的时间长达60s以上。
增加“添加自定义字体”小工具( upload font file to wp-content/plugins/down-as-pdf/cache/ and then ,via addf.php?font=the-font-filename.ttf )
增加对密码保护日志和未发布日志的检测

2.2.2
增加table格式美化
blockquote块美化、修正代码
TCPDF更新到5.9.142
默认启用磁盘缓存,并添加“清除缓存”按钮
添加中、日、韩语言支持,添加正体中文支持
新增字体选项(可选择字体)
添加错误处理机制
改变:默认在首页、分类页面、存档页面不显示下载按钮

感谢“蓝冰”测试反馈bug

2011/07/05
增加cache 目录
增加cache目录可写检测
增加在文章、页面 或者 文章和页面显示 显示的选项

感谢 scomper 柠檬 反馈bug。

Note

后台选项解释及注意事项:

嵌入字体子集:
如果启用这项的话,可以减小生成的PDF文档的大小但是这会使得生成PDF的速度变得很慢而且会消耗很多的内存,相反,如果禁用此项,
当浏览者点击下载时,生成PDF文档的速度会更快一些,但是生成的PDF文档也更大(基本上要大1 MB 多)。
自定义LOGO: 用自己的LOGO文件替换wp-content/plugins/down-as-pdf/images/目录下面的logo.png即可。
请确保wp-content/plugins/down-as-pdf/cache/目录具有读写权限。

生成的PDF文档:

后台选项:

Plugin Download

2.3.6  多语言版(中文+英文)下载:

down-as-pdf.2.3.6.zip (12.7 MB)

1.0版英文版下载:

down-as-pdf.zip (4.4 MB)

更多
102 Responses Post a comment
  1. 荒野无灯

    @Nonozone
    这个目前不支持。当时考虑过支持各种filter hook, 不过由于生成后的pdf文档格式会乱,因此,目前只对[cc]标记和pre 、 code 代码做了特殊处理。而且,一般教程类的文章,基本没有插入整个gallery作为配图说明的。

  2. Nonozone

    有一个问题,如果这篇文章的图片都是编辑的时候直接插入文章,插件可以正常输出PDF,但是如果这个图片是先创建某个Gallery,然后文章里使用参数调用,类似[img xxx],这样就没有办法输出PDF,并且不仅仅是不输出图片,连其他文字部分也无法输出,不知道这个问题能否改进或者解决,谢谢。

  3. sean

    您好,请问如果我想更改这个插件按钮在文章里的位置,该怎么实现呢?

  4. 雨印雨音

    我的不知道为什么不能下载,都是下到99%左右就不能下了

  5. ubs

    发现不对 是装了 Widget Logic 1ile冲突好像 停用它就好了 该怎么解决啊 求助@ubs

  6. ubs

    TCPDF ERROR: [Image] Unable to get image: %20"图片链接"%20

    刚开始是可以的 好像用WP-Optimiz清理后就变以上情况了

  7. emoism

    如何使用自定义的字体了?把字体上传到哪?谢谢

  8. 荒野无灯

    1
    http://wordpress.org/extend/plugins/down-as-pdf/changelog/
  9. Self-TOWN

    报告个视觉上的bug,启用磁盘缓存: 启用嵌入字体子集可以减小生成的PDF文档的大小但是这会使得生成PDF的速度变得很慢而且会消耗很多的内存。 后台的翻译有些问题

  10. Self-TOWN

    另外这个插件所生成的pdf后,下载要消耗多少的网站流量呢?

  11. Self-TOWN

    是不是最新的版本中的bug已经修正呢?2.3.3 的修正版在官方插件处可以下载到么?另外,在readm中没看到有2.3.3的更新历史。。。希望可以弄一下。

  12. 荒野无灯

    我没有细看tcpdf 的实现,一般来说即使开启的防盗链,也可以正常输出pdf的。(如我的博客)。刚才把svn 更新了下,版权信息不能显示问题已解决(tcpdf 内部api的改变导致的Orz ...)

  13. Self-TOWN

    感觉第一个个问题已经搞定了,在cp面板中启用“允许直接请求(比如 向你的浏览器镜像中输入 url) ”。谢谢你开发的这个插件

  14. Self-TOWN

    换到了down-as-pdf.2.3.1版本,刚才的第二个问题解决了,只是这两个版本的插件中生成的图片都有黑色的边框,可以去掉不?

  15. Self-TOWN

    我使用的是cp面板,比如在这个页面生成pdf没有问题:
    http://blog.selftown.com/%E4%BD%BF%E7%94%A8-htaccess-%E6%96%87%E4%BB%B6%E5%AE%9E%E7%8E%B0%E9%98%B2%E7%9B%97%E9%93%BE.htm
    但比如有图片的页面
    http://blog.selftown.com/%E8%BD%AC-wordpress%E6%95%B0%E6%8D%AE%E6%81%A2%E5%A4%8Dmysql%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84%E5%AF%BC%E5%87%BA%E5%AF%BC%E5%85%A5%E6%96%B9%E6%B3%95%E5%9B%BE%E6%96%87%E8%AF%A6%E8%A7%A3.htm
    就出现了error。
    禁用了防盗链就没有问题了,我想问问有没有解决的办法。另外在生成的pdf的最下面,有个版权声明中,文本链接斌没有显示连接地址,不知道这个是不是有问题呢?我使用的是2.3.3 版本。

  16. 3qsami

    这个插件非常不错!
    我有一个问题需要博主指点一下,我很早就在自己的博客用户信息修改了邮箱,可是下载的pdf文档里却显示我之前的邮箱,不知道应该如何更改?
    我知道了,应该在“常规”里修改,而不是在“用户”里。

  17. 荒野无灯

    @Richer Yang
    你说的这个已经实现。2.3.0 默认设置是不提供下载。要在日志编辑页面右侧选择YES方可下载。还有,可以在日志中加入

    1
    [pdf_here]

    来控制下载按钮的显示位置。
    不过,我在2.3.1中默认取消了这个功能(选择YES那个),如果需要实现,编辑down-as-pdf.php修改

    1
    private static $allow_down_default = 1;

    1
    private static $allow_down_default = 0;

    即可。

  18. Richer Yang

    使用正體中文應該不會造成很大的困擾吧!
    我想要提出一個建議,不知道可不可以不要預設每一篇文章或每天篇分頁都顯示下載的圖示。
    因為我只打算讓部分的文章提供 pdf 下載,目前是手動修改外掛程式,不過這樣每次更新都要一次很辛苦,所以好奇你打算實現嗎?

  19. 荒野无灯

    @Will
    关于固定链接,这个我说下,不是bug,我特意用的短链接,因为这样即使你博客以后换链接结构了,还是可以访问到的,还有就是默认格式比较简短。位置这个问题,会加入@TODO里面,目前集中精力在功能上面了~~有时间会加上的。

  20. Will

    反映个bug,固定连接无法显示,只显示wordpress默认格式,再提个建议,由于主题的多样性,所以建议能自定义“download as pdf”的位置,就像无匿一样

  21. Your Name

    @荒野无灯
    更新了,请大师看一下
    Backtrace from fatal error 'Allowed memory size of 33554432 bytes exhausted (tried to allocate 4980736 bytes)' at /wp-content/plugins/down-as-pdf/tcpdf/fonts/droidsansfallback.php 14:

    /wp-includes/plugin.php 405 calling call_user_func_array()
    /home/anhaoinf/public_html/Will/project/wp-includes/load.php 554 calling do_action()
    calling shutdown_action_hook()

  22. 荒野无灯

    @Your Name
    如博客中引用的图片无法获取到、主机不支持相应函数等。定义debug后即可看到详细错误是在哪里发生的。

  23. 荒野无灯

    @Your Name
    这个是提示你调试的,如果你不会调试,定义那个也没用。出现这个错误,说明这个错误不是由这个插件引发的,是其它原因导致的。

  24. Your Name

    Fatal Error! Please put OR change define('WP_DEBUG', TRUE); in your wp-config.php and then visit this page again to see what happened.
    Error Message generated by Hacklog Down As PDF plugin
    修改后全是notice提示

  25. 网赚末班车

    貌似下载不了,提示“输入提取码”,可以解决下吗、?谢谢

  26. Pin

    能够被蜘蛛抓取拿才有权重 :lol:

  27. Pin

    删除了断代码,可以被下载了 却出现了上面那个错误 唉...

  28. Pin

    负载不大 嘿嘿. 我的lnmp 抓的话负载在0.2左右呵呵

  29. Pin

    TCPDF ERROR: Some data has already been output, can't send PDF file
    出现了这个错误 :???:

  30. 荒野无灯

    这个也让蜘蛛抓?那服务器的负载可会很大哦。我默认检测来路的,不是本站就不显示PDF。

  31. Pin

    请教
    http://ihacklog.com/wordpress/wp-content/plugins/down-as-pdf/generate.php?id=3771
    无法用这样的形式获取PDF 文件
    蜘蛛抓取不了 :arrow:

  32. alist

    我尝试把字体改为12后基本上不会出现内容丢失,但还是有一个空间上生成不了文档。

  33. 荒野无灯

    目前没有提供此选项,如要修改可自行修改源码。 :smile:

  34. mitgai

    请问生成的pdf文件里的CC授权怎么修改?我用的是 CC BY-NC-SA 3.0

  35. alist

    1、一个国外主机空间,上传安装后,下载PDF出现404,设置了cache目录为777也没解决;
    2、在其它几个主机安装没问题安装完立即可以使用,但下载的文档里会出现部分行出现空白,情况如下:
    1。 blockquote标签内的内容无法显示;
    2。内容安装了动态显示的广告插件(广告内容为js代码),好像广告内容所在的位置就是丢失内容的位置;

  36. loongsky

    很不错的插件哦,技术资料类的有这个插件应该很爽

  37. wmtimes

    这应该是很不错的一个插件。

  38. 荒野无灯

    应该是你的服务器不支持相关组件导致的,你可以查看下PHP error 找到原因。

  39. vinciy

    荒野无灯,怎么我点击下载之后,会出现500错误呢?如何修复啊?请指教

  40. yang

    如果文章里面有图片的话 输出不了啊。
    只在浏览器显示第一个外部地址。
    是不是图片不能使用外部的呢?

  41. 无冷

    这个东西太牛了,每次来都有很牛叉的东西啊

  42. 荒野无灯

    pdf不保存在服务器的,而且,图片缓存也是设定一天清理一次。

  43. 荒野无灯

    嗯,如果不启用嵌入子集的话,嵌入的就是全集了,因此文件平均每个要大2M左右。不过我刚才打开你博客查看PDF速度还挺快的。PS:你现在貌似后台设置的是”在浏览器输出PDF"哦,不是下载。。。

  44. 柠檬

    可以下载,但是如果启动嵌入字体子集这一选项出来的PDF只有图片没有子,禁止这一项就可以,但是文件 忒大,另外生成的PDF文件存在哪里了呵呵,这么大占用博客空间的话可了不得啊

  45. 荒野无灯

    嗯,由于 tcpdf库的原因,目前有一些奇怪的bug.

  46. 荒野无灯

    嗯,你的建议非常好,谢谢!
    安装包是用zend studio 导出的,因此空的cache 目录默认没有导出。。。。囧

  47. scomper

    V2的安装包多了一Down-As-PDF-v2.zip层压缩,直接安装不行的;
    另外安装后cache目录默认没有出来,需要手动加并设置权限;
    哦,最后就是Down-As-PDF 在post和page、以及摘要页都显示,无法控制,最好提供手动放置代码。

  48. 柠檬

    设置权限为777还是不行,看来我与这个插件无缘啊呵呵

  49. 荒野无灯

    请确保wp-content/plugins/down-as-pdf/cache/目录具有读写权限。

  50. 柠檬

    Linux,貌似也木有cache这个文件夹,我自己建了一个,还是不行

  51. 柠檬

    不能用 出来这些东西

    Warning: imagepng() [function.imagepng]: Unable to open '/home/ningmeng/domains/ningmeng.u7.30wan.com/public_html/wp-content/plugins/down-as-pdf/tcpdf/../cache/mska_0b2463e0755b0926ab3c13ca2f964372' for writing: No such file or directory in /home/ningmeng/domains/ningmeng.u7.30wan.com/public_html/wp-content/plugins/down-as-pdf/tcpdf/tcpdf.php on line 8053

    Warning: imagepng() [function.imagepng]: Unable to open '/home/ningmeng/domains/ningmeng.u7.30wan.com/public_html/wp-content/plugins/down-as-pdf/tcpdf/../cache/mskp_0b2463e0755b0926ab3c13ca2f964372' for writing: No such file or directory in /home/ningmeng/domains/ningmeng.u7.30wan.com/public_html/wp-content/plugins/down-as-pdf/tcpdf/tcpdf.php on line 8058

    Warning: fopen(/home/ningmeng/domains/ningmeng.u7.30wan.com/public_html/wp-content/plugins/down-as-pdf/tcpdf/../cache/mska_0b2463e0755b0926ab3c13ca2f964372) [function.fopen]: failed to open stream: No such file or directory in /home/ningmeng/domains/ningmeng.u7.30wan.com/public_html/wp-content/plugins/down-as-pdf/tcpdf/tcpdf.php on line 7875
    TCPDF ERROR: Can't open image file: /home/ningmeng/domains/ningmeng.u7.30wan.com/public_html/wp-content/plugins/down-as-pdf/tcpdf/../cache/mska_0b2463e0755b0926ab3c13ca2f964372

  52. 柠檬

    生成的文件保存在自己博客的空间吗?

  53. 荒野无灯

    :smile: 谢谢! 其实我很多东西,我做的时候,首先是想自己使用的。

  54. 柠檬

    哈哈,博主的每一个插件我都喜欢支持,期待能实现评论后下载

  55. 荒野无灯

    现在已经改进,生成文档可以小到200K-300K左右。

  56. mattyang

    荒野无灯你好,

    很喜欢的的这个插件,可以方便的下载博客的文章,但是遗憾的是,我确不能进入后台设置,系统提示:您没有足够的权限访问这个页面。

    如果能帮我解决这个问题,讲不胜感激!

  57. 风鸣岬

    为什么在设置页说没有权利访问该页面呢?

  58. 好球

    问什么我安装了说我不够权利访问该页面的?

  59. ducs

    我用官方的测试文档修改require_once里的路径后运行是没有问题的

  60. ducs

    你好,我照你说的那样做了,但是没有效果,还是下载pdf后就报TCPDF ERROR: Some data has already been output, can't send PDF file,
    没有前面那句,就这一句。

  61. 荒野无灯

    可能是你本地开启的错误报告模式很严格,此插件目前在本博客可以正常运行。你本地出现那个错误,应该是下面这个对吧?

    1
    2
    Notice: Undefined property: stdClass::$last_name in D:\htdocs\wordpress\wordpress\wp-content\plugins\down-as-pdf\generate.php  on line 30
    TCPDF ERROR: Some data has already been output, can't send PDF file

    修改插件 generate.php ,在

    1
      require_once("../../../wp-config.php");

    这一句前面添加

    1
    error_reporting(0);

    即可 。

  62. ducs

    我的装上后每次都是TCPDF ERROR: Some data has already been output, can't send PDF file
    请问这是什么原因啊?我的是windows7上的wordpress2.92
    是否还需要装其它控件才能够使用?

  63. 博百优

    这插件很强大啊,要是出个word文档的就好了

  64. e

    godaddy主机用不了 Internal Server Error

  65. 荒野无灯

    嗯 ,确实。但是不使用内嵌字体的话,在没装adobe reader的机子上就无法看生成的pdf。

  66. Dianso

    一个页面都好几MB,太大了

Leave a Reply

Note: You may use basic HTML in your comments. Your email address will not be published.

Subscribe to this comment feed via RSS