blog

ノードが生成し、Wordを挿入し、Word文書を生成する

アカウントに膨大な量のデータを考慮して、生成されたすべての画像の後に最初に非同期であることが必要な場合がありますし、生成された単語\n\nノードQRCODE\nvar QRCode = require...

Feb 10, 2020 · 4 min. read
シェア

単語を生成する第二段階

  • 膨大なデータの可能性を考慮し、ワード生成後に生成されるすべてのピクチャを非同期で待機する必要があります。
  • node-qrcode
var QRCode = require('qrcode')
/**
 * CreateQRcode ローカルに生成・保存
 * @param {*} item 情報を生成する必要がある
 */
const CreateQRcode = (item , callback)=>{
 QRCode.toFile(path.join(QRcodeOutDir, `${item.****}.png`),`${item.****}`,{margin:6,width:10},function(err){
 if(err){ throw err }
 callback(null)
 })
}
  • ここでのコールバックは、 非同期ライブラリの 各limit
  • node-qrcode
/**
*eachOfLimit(coll, limit, iteratee, callbackopt)
*coll 	 Array | Iterable | AsyncIterable | Object A collection to iterate over データソースに相当する
*limit number The maximum number of async operations at a time 同じバッチでいくつのタスクが実行されているか?
*iteratee AsyncFunction An async function (item, key, callback)
*callback function <optional>
*/
Async.eachLimit(data,10,CreateQRcode,function(err){
 <!--これはコールバックである--。>
})})

ステップ2 単語の生成

  • ライブラリdocxと生成された単語
const docx = require('docx')
const { AlignmentType, BorderStyle, WidthType, VerticalAlign, Document, Packer, Paragraph, Media, Table, TableCell, TableRow } = docx
 <!--ただ、ドキュメントの例が必要なのだ--。>
doc = new Document({
 title:'テスト文書,
 <!--これはスタイルであり、特定の公式文書の上にすることができる---。>
 styles:{
 paragraphStyles:[
 {
 id:'title',
 paragraph:{
 alignment:AlignmentType.CENTER
 },
 run:{
 size:24
 }
 },
 {
 id:"left",
 paragraph: {
 indent: {
 left: 1400,
 },
 },
 run: {
 size: 20,
 family:' 
 }
 },
 {
 id:'right',
 paragraph:{
 indent:{
 left: 500,
 }
 },
 run:{
 size:26
 }
 }
 ]
 }
})
<!--需要がテーブル表を生成することですので、例としてテーブル---。>
<!--この作品は、各行のtrを生成することである--。>
new TableRow({
 children:[
 new TableCell({
 children:[
 new Paragraph(''),
 new Paragraph({text: `${item.****}`,style:'left'}),
 new Paragraph(''),
 new Paragraph({text:`${item.****}`,style:'left'}),
 new Paragraph(''),
 new Paragraph({text:`${item.****}`,style:'left'}),
 new Paragraph(''),
 ],
 <!--width 次のWidthType.PERCENTAGE それはパーセンテージだ--。>
 width:{
 size: 54,
 type: WidthType.PERCENTAGE
 },
 borders:{
 right:{style:BorderStyle.NONE,size:0,color:'ffffff'}
 }
 }),
 new TableCell({
 children:[
 new Paragraph(''),
 new Paragraph(Media.addImage(doc,fs.readFileSync(path.join(QRcodeOutDir, `${item.****}.png`)),120,120)),
 <!--この作品は写真に挿入されている--。>
 ],
 <!--width 次のWidthType.PERCENTAGE それはパーセンテージだ--。>
 width:{
 size: 26,
 type: WidthType.PERCENTAGE
 },
 borders:{
 left:{style:BorderStyle.NONE,size:0,color:'ffffff'},
 right:{style:BorderStyle.NONE,size:0,color:'ffffff'},
 }
 }),
 new TableCell({
 children:[
 new Paragraph({text:'****',style:'right'}),
 new Paragraph(''),
 new Paragraph({text:'****',style:'right'}),
 ],
 <!--width 次のWidthType.PERCENTAGE それはパーセンテージだ--。>
 width:{
 size: 20,
 type: WidthType.PERCENTAGE
 },
 borders:{
 left:{style:BorderStyle.NONE,size:0,color:'ffffff'}
 },
 verticalAlign:VerticalAlign.CENTER,
 })
 ],
})
<!--各行を行の配列に入れることができる---。>
<!--この作品は、直接テーブルの行の値に割り当てられている--?>
const table = new Table({
 rows:rows
})
doc.addSection({
 children:[
 <!--この作品では、コンテンツを追加する必要があるものに加えて、表に加えて単語である---。>
 new Paragraph({text:'****',style:'title'}),
 table
 ]
})
<!--最後に、単語を生成する出力パスによると--。>
Packer.toBuffer(doc).then((buffer)=>{
 fs.writeFileSync(path.join(wordOutDir, `${wordInfos.taskName}.docx`),buffer)
})
  • 繰り返しになりますが、fsとpathのライブラリについては触れません。
  • もちろん、ワード文書の生成も各リミットを使用して、この事は子供たちが研究を勉強することができます
  • 最後に、最終的な効果に子供の靴を表示するには、ドキュメントと最終的な効果で、スマートな人々は、上記のことを理解することができなければなりません!
  • 自分のために記録を作りたいし、同じようなニーズを持つ人たちの役に立ちたいと思っています。
Read next

20 イテレーターとは何か?

注意事項\nイテレータは、シーケンス内のオブジェクトをトラバースするために使用されるオブジェクトです。開発者は、シーケンスの基本構造を知る必要はありません。\niterator() メソッドはインタフェースであり、継承されます。\n\nイテレータは

Feb 10, 2020 · 1 min read