成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

在 WordPress 主題中使用 knp-snappy 生成 PDF 文件并發(fā)送給客戶

AlanKeene / 3728人閱讀

摘要:在開發(fā)一個基于的系統(tǒng)的時(shí)候,有一個需求是根據(jù)用戶提供的信息,生成一個文件,并通過電子郵件發(fā)送給客戶。有了這兩個信息,調(diào)用的對應(yīng)方法就可以生成文件。生成文件后,使用內(nèi)置的函數(shù)發(fā)送即可。本文始發(fā)于,經(jīng)作者同意轉(zhuǎn)載。

在開發(fā)一個基于 WordPress 的 CRM 系統(tǒng)的時(shí)候,有一個需求是根據(jù)用戶提供的信息,生成一個 PDF 文件,并通過電子郵件發(fā)送給客戶。沒有做過的朋友可能會認(rèn)為這是一個比較麻煩的需求,其實(shí)我們把這個需求拆分開來做,就很簡單了,首先,獲取用戶信息,然后使用用戶信息生成 PDF 文件,最后再把生成的 PDF 文件通過 Email 發(fā)送給客戶就可以了 。

knp-snappy 是一個可以幫助我們從 URL 或 HTML 文件生成 PDF 的 PHP 庫,該庫依賴 wkhtmltopdf,如果操作系統(tǒng)中沒有安裝,按照前面網(wǎng)址中的說明安裝即可。安裝后,我們通過 Composer 安裝,然后再包含 Composer 生成的自動加載文件到主題或插件中。

composer require knplabs/knp-snappy
使用 knp-snappy 生成 PDF 文件

首先,我們需要指定生成的 PDF 文件保存的位置,然后指定用來生成 URL 文件的 HTML 文件或字符串。有了這兩個信息,調(diào)用 knp-snappy 的對應(yīng)方法就可以生成 PDF 文件。

use KnpSnappyPdf;
use WenpriseFacadesView;

// 生成的 PDF 文件
$file = WP_CONTENT_DIR . "/pdf/register-" . $client->ID . ".pdf";

// 如果文件已存在,刪除文件,重新生成
if (file_exists($file)) {
    unlink($file);
}

// 用來生成 PDF 文件的 HTML 文件
$html = View::make($view)->with($data);

// 開始使用 knp-snappy 生成 PDF 文件
$snappy = new Pdf("/usr/local/bin/wkhtmltopdf");
try {
    $snappy->generateFromHtml($html, $file);
} catch (Exception $e) {

}

上面代碼中的 View 類是我們的 MVC 框架中的方法,你可以使用自己的函數(shù)替換,或者可以直接從 URL 中生成 PDF,具體使用方法請參考 knp-snappy 使用文檔。

如果發(fā)現(xiàn) PDF 中顯示不了中文或者中文是亂碼的,可能是服務(wù)器操作系統(tǒng)中沒有中文字體,從 Windows 中復(fù)制 simsun.ttf 或者中文字體到 /usr/share/fonts 目錄中即可。
通過電子郵件發(fā)送生成的 PDF 文件
生成后的文件保存在我們在代碼中指定的位置。生成 PDF 文件后,使用 WordPress 內(nèi)置的 wp_mail 函數(shù)發(fā)送即可。獲取用戶電子郵件、設(shè)置郵件標(biāo)題、內(nèi)容的方法很簡單,WordPress 官方也有介紹,這里就不多說了。

wp_mail($to, $subject, $message, $headers, [$file]);
請注意文件安全

為了防止 PDF 文件泄漏,我們需要采取一些安全措施,比如隨機(jī)生成 PDF 文件名,通過 Ngnix 設(shè)置,禁止用戶下載 PDF 文件,或者郵件發(fā)送后,直接刪除 PDF 文件等等。

本文始發(fā)于:https://www.wpzhiku.com/wordp...,經(jīng)作者同意轉(zhuǎn)載。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/31332.html

相關(guān)文章

  • 送給大家一本免費(fèi)的 WordPress 電子書

    摘要:在兩年前的年底,我在上上線了我自己的達(dá)人課,如今,已經(jīng)過去了當(dāng)初約定的銷售時(shí)間,我決定將這個達(dá)人課開放給大家來看,讓更多的人掌握的開發(fā)能力。內(nèi)容持續(xù)更新這個電子書的內(nèi)容我后續(xù)還會繼續(xù)更新。我自己仍然在使用,相關(guān)的一些實(shí)踐也會分享到電子書里。 在兩年前的 2017 年底,我在 GitChat 上上線了我自己的 WordPress 達(dá)人課,如今,已經(jīng)過去了當(dāng)初約定的銷售時(shí)間,我決定將這個達(dá)...

    dantezhao 評論0 收藏0
  • Node.js運(yùn)行原理、高并發(fā)性能測試對比及生態(tài)圈匯總

    摘要:模式,單實(shí)例多進(jìn)程,常用于多語言混編,比如等,不支持端口復(fù)用,需要自己做應(yīng)用的端口分配和負(fù)載均衡的子進(jìn)程業(yè)務(wù)代碼。就是我們需要一個調(diào)度者,保證所有后端服務(wù)器都將性能充分發(fā)揮,從而保持服務(wù)器集群的整體性能最優(yōu),這就是負(fù)載均衡。 showImg(https://segmentfault.com/img/remote/1460000019425391?w=1440&h=1080); Nod...

    kamushin233 評論0 收藏0
  • Node.js運(yùn)行原理、高并發(fā)性能測試對比及生態(tài)圈匯總

    摘要:模式,單實(shí)例多進(jìn)程,常用于多語言混編,比如等,不支持端口復(fù)用,需要自己做應(yīng)用的端口分配和負(fù)載均衡的子進(jìn)程業(yè)務(wù)代碼。就是我們需要一個調(diào)度者,保證所有后端服務(wù)器都將性能充分發(fā)揮,從而保持服務(wù)器集群的整體性能最優(yōu),這就是負(fù)載均衡。 showImg(https://segmentfault.com/img/remote/1460000019425391?w=1440&h=1080); Nod...

    BDEEFE 評論0 收藏0
  • Node.js運(yùn)行原理、高并發(fā)性能測試對比及生態(tài)圈匯總

    摘要:模式,單實(shí)例多進(jìn)程,常用于多語言混編,比如等,不支持端口復(fù)用,需要自己做應(yīng)用的端口分配和負(fù)載均衡的子進(jìn)程業(yè)務(wù)代碼。就是我們需要一個調(diào)度者,保證所有后端服務(wù)器都將性能充分發(fā)揮,從而保持服務(wù)器集群的整體性能最優(yōu),這就是負(fù)載均衡。 showImg(https://segmentfault.com/img/remote/1460000019425391?w=1440&h=1080); Nod...

    TesterHome 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<