在开发基于WordPress的CRM系统时,需要根据用户提供的信息生成PDF文件发送给客户给客户。没做过的朋友可能会觉得这是一个比较麻烦的需求。其实我们拆分这个需求很简单。首先获取用户信息,然后利用用户信息生成PDF文件,最后生成的PDF文件可以通过Email发送给客户。knp-snappy是一个PHP库,可以帮助我们从URL或HTML文件生成PDF。这个库依赖于wkhtmltopdf。如果操作系统中没有安装,只需按照前面网址中的说明进行安装即可。安装完成后,我们通过Composer安装,然后将Composer生成的autoload文件包含到主题或插件中。composerrequireknplabs/knp-snappy使用knp-snappy生成PDF文件首先我们需要指定生成的PDF文件的保存位置,然后指定生成URL文件使用的HTML文件或字符串。有了这两条信息,调用knp-snappy对应的方法就可以生成PDF文件了。使用Knp\Snappy\Pdf;使用Wenprise\Facades\View;//生成的PDF文件$file=WP_CONTENT_DIR.'/pdf/注册-'。$客户端->ID。'.pdf';//如果文件已经存在,则删除该文件,重新生成if(file_exists($file)){unlink($file);}//用于生成PDF文件的HTML文件$html=View::make($view)->with($data);//开始使用knp-snappy生成PDF文件$snappy=newPdf('/usr/local/bin/wkhtmltopdf');try{$snappy->generateFromHtml($html,$file);}catch(\Exception$e){}上面代码中的View类是我们MVC框架中的一个方法。你可以用自己的函数替换它,也可以直接从URL生成PDF。具体使用请参考knp-snappy文档。如果发现PDF无法显示中文或中文乱码,可能是服务器操作系统没有中文字体,将simsun.ttf或Windows的中文字体复制到/usr/share/fonts目录。通过电子邮件发送生成的PDF文件生成的文件保存在我们在代码中指定的位置。生成PDF文件后,使用WordPress内置的wp_mail功能发送。获取用户邮箱、设置邮件标题、内容的方法很简单,WordPress官方也有介绍,这里不再赘述。wp_mail($to,$subject,$message,$headers,[$file]);请注意文件安全为了防止PDF文件泄露,我们需要采取一些安全措施,比如随机生成PDF文件名,通过Ngnix设置,禁止用户下载PDF文件,或者发送后直接删除PDF文件通过email等方式转载。本文源自:https://www.wpzhiku.com/wordp...,转载已征得作者同意。
