溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Nodejs中怎么利用Kue動態(tài)生成PDF文檔

發(fā)布時間:2021-07-20 16:39:47 來源:億速云 閱讀:435 作者:Leah 欄目:web開發(fā)

Nodejs中怎么利用Kue動態(tài)生成PDF文檔,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

先決條件

您需要安裝以下軟件:

  • Node.js最新穩(wěn)定版。

  • Redis


您可以從官方站點安裝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


您應該在終端中看到類似的輸出。

Nodejs中怎么利用Kue動態(tài)生成PDF文檔


現(xiàn)在使用以下命令運行worker.js .

$ node worker.js


要驗證作業(yè)是否已添加到隊列,請訪問localhost:4000以查看隊列。

Nodejs中怎么利用Kue動態(tài)生成PDF文檔

看完上述內(nèi)容,你們掌握Nodejs中怎么利用Kue動態(tài)生成PDF文檔的方法了嗎?如果還想學到更多技能或想了解更多相關內(nèi)容,歡迎關注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI