您好,登錄后才能下訂單哦!
Nodejs中怎么利用Kue動態(tài)生成PDF文檔,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
先決條件
您需要安裝以下軟件:
Node.js最新穩(wěn)定版。
您可以從官方站點安裝Node.js.
要在Ubuntu 18.04中安裝Redis,請使用以下命令。
$ sudo apt-get update
$ sudo apt-get install redis-server
```
要在Mac中安裝Redis,請閱讀以下文章。
Redis入門,聊天應用程序
啟動Redis
redis-3.2.8 $ src / redis-server
要在Windows 10上安裝Redis,請訪問此Redis官方實驗室安裝指南并按照步驟操作。
關于Kue
Kue是一個運行在Redis之上的工作隊列。我們可以使用隊列將任務委派給多個worker,并節(jié)省處理時間。使用隊列系統(tǒng)完成高計算任務,例如視頻渲染,文檔生成,繁重的數(shù)學計算。
我正在使用Kue演示如何使用該軟件以高效的方式設計和擴展系統(tǒng)。
創(chuàng)建節(jié)點項目
創(chuàng)建一個新文件夾并使用終端或命令提示符切換到該文件夾。
mkdir pdfgeneration && cd pdfgeneration
使用以下命令創(chuàng)建新的Node項目。
$ npm init --y
讓我們安裝依賴項。我們需要kue和pdfkit依賴。
$ npm install --save kue pdfkit
真棒。讓我們編寫我們的應用程序。
我將創(chuàng)建兩個命名job.js和worker.js的文件。
在Job.js中,我將編寫代碼來讀取文件或數(shù)據(jù)庫并創(chuàng)建一個Kue作業(yè)。
在Worker.js中,我將編寫代碼來收聽Kue主題并在請求到來時生成PDF文檔。
為簡單起見,這里有一些我將用于生成PDF文檔的條目。
invoice.js
模塊。exports = {
內(nèi)容: [ {
' index ' : 1 ,
' text ' : ' 你好Shahid,你本月收取100美元的服務費。“
},{
' index ' : 2 ,
' text ' : ' 你好杰森,你這個月收取50美元的服務費?!?/p>
},{
' 指數(shù)' : 3 ,
' text ' : ' 你好Mark,你本月收取76美元的服務費。“
} ]
}
這是我們的Job.js代碼。
const kue = require (' kue ' );
const invoice = require(' ./invoice ');
const queue = kue 。createQueue();
function startJob () {
讓 invoiceData = invoice 。內(nèi)容;
invoiceData 。forEach(( singleInvoice ) => {
//推送隊列中的數(shù)據(jù)
讓 job = 隊列。創(chuàng)建(' 發(fā)票' , {
title : ` 生成發(fā)票$ { singleInvoice 。index } ` ,
模板: singleInvoice 。文字,
})。延遲(5000)。優(yōu)先級(' 高')。save(( err ) => {
if(! err){
控制臺。日志(' 工作加... ' + 工作。 ID);
}
});
});
}
startJob ();
在此代碼中,我們正在讀取存儲有關PDF文檔的信息的文件,對于每個條目,我們在隊列中創(chuàng)建一個新作業(yè)。
這是我們的Worker.js代碼。
const kue = require (“ kue ” );
const queue = kue 。createQueue();
const pdfKit = require(' pdfkit ');
const fs = require(' fs ');
function startProcess () {
//聽隊列
//開始處理電子郵件
隊列。流程(' invoice ' , ( job , done ) => {
//在每個請求上生成pdf
generatePdfInvoice(作業(yè)。數(shù)據(jù),完成);
});
}
function generatePdfInvoice ( data , done ) {
讓 doc = new pdfKit ;
文檔。管(FS 。createWriteStream(` $ { __dirname } /發(fā)票/ $ {數(shù)據(jù)。標題} .PDF `));
文檔。fontSize(14)。文本(數(shù)據(jù)。模板, 100 , 100);
文檔。結(jié)束();
完成();
}
startProcess();
KUE 。app 。聽(4000 );
在此代碼中,我們正在聽Kue主題即發(fā)票,并且在每個請求中,我們正在生成pdf文檔。PDF文檔的標題應該是唯一的,因此我們使用索引字段來維護唯一的標題約定。
運行應用程序
要運行應用程序,請首先使用以下命令運行job.js.
$ node job.js
您應該在終端中看到類似的輸出。
現(xiàn)在使用以下命令運行worker.js .
$ node worker.js
要驗證作業(yè)是否已添加到隊列,請訪問localhost:4000以查看隊列。
看完上述內(nèi)容,你們掌握Nodejs中怎么利用Kue動態(tài)生成PDF文檔的方法了嗎?如果還想學到更多技能或想了解更多相關內(nèi)容,歡迎關注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。