国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

AlanKeene / 3714人閱讀

摘要:在開發一個基于的系統的時候,有一個需求是根據用戶提供的信息,生成一個文件,并通過電子郵件發送給客戶。有了這兩個信息,調用的對應方法就可以生成文件。生成文件后,使用內置的函數發送即可。本文始發于,經作者同意轉載。

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

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

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

首先,我們需要指定生成的 PDF 文件保存的位置,然后指定用來生成 URL 文件的 HTML 文件或字符串。有了這兩個信息,調用 knp-snappy 的對應方法就可以生成 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 框架中的方法,你可以使用自己的函數替換,或者可以直接從 URL 中生成 PDF,具體使用方法請參考 knp-snappy 使用文檔。

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

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

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

本文始發于:https://www.wpzhiku.com/wordp...,經作者同意轉載。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/31332.html

相關文章

  • 送給大家一本免費的 WordPress 電子書

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

    dantezhao 評論0 收藏0
  • Node.js運行原理、高并發性能測試對比及生態圈匯總

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

    kamushin233 評論0 收藏0
  • Node.js運行原理、高并發性能測試對比及生態圈匯總

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

    BDEEFE 評論0 收藏0
  • Node.js運行原理、高并發性能測試對比及生態圈匯總

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

    TesterHome 評論0 收藏0

發表評論

0條評論

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