web-dev-qa-db-ja.com

pdfkitのHTMLテーブル(Expressjs-Nodejs)

Pdfkitを使用してpdfファイルを生成していますが、このpdfファイルをブラウザーに送信したいと思います。
次のコードは正常に機能しており、テキスト付きのPDFを1つ取得しています。
実際、次のコードは、nodejsでpdfkitを使用してpdfを生成するためのサンプルですが、ここでhtmlテーブルを作成したいと思います。

最新のコード

var PDFDocument = require('pdfkit');
var fs=require('fs');
doc = new PDFDocument();
doc.pipe( fs.createWriteStream('out.pdf') );
doc.moveTo(300, 75)
   .lineTo(373, 301)
   .lineTo(181, 161)
   .lineTo(419, 161)
   .lineTo(227, 301)
   .fill('red', 'even-odd');  

var loremIpsum = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam in...';  

doc.y = 320;
doc.fillColor('black')
doc.text(loremIpsum, {
   paragraphGap: 10,
   indent: 20,
   align: 'justify',
   columns: 2
});
doc.pipe( res );
doc.end();

しかし、pdfkitを使用してPDFでHTMLテーブルを生成する方法がわかりませんか?
HTMLテーブルpdfの作成を手伝ってくれる人はいますか?

12
user sks
function example(){    
var doc = new PDFDocument();

var writeStream = fs.createWriteStream('filename.pdf');
doc.pipe(writeStream);
//line to the middle
doc.lineCap('butt')
  .moveTo(270, 90)
  .lineTo(270, 230)
  .stroke()

row(doc, 90);
row(doc, 110);
row(doc, 130);
row(doc, 150);
row(doc, 170);
row(doc, 190);
row(doc, 210);

textInRowFirst(doc, 'Nombre o razón social', 100);
textInRowFirst(doc, 'RUT', 120);
textInRowFirst(doc, 'Dirección', 140);
textInRowFirst(doc, 'Comuna', 160);
textInRowFirst(doc, 'Ciudad', 180);
textInRowFirst(doc, 'Telefono', 200);
textInRowFirst(doc, 'e-mail', 220);
doc.end();

writeStream.on('finish', function () {
  // do stuff with the PDF file
  return res.status(200).json({
    ok: "ok"
  });

});
}

function textInRowFirst(doc, text, heigth) {
  doc.y = heigth;
  doc.x = 30;
  doc.fillColor('black')
  doc.text(text, {
    paragraphGap: 5,
    indent: 5,
    align: 'justify',
    columns: 1,
  });
  return doc
}


function row(doc, heigth) {
  doc.lineJoin('miter')
    .rect(30, heigth, 500, 20)
    .stroke()
  return doc
}

画像の結果を表示をクリック

9

PDFKitで直接行うのは簡単ではありません。テーブルレンダリングロジックを自分で実装する必要があります。簡単にやりたいのであれば、テーブルはテキストが入った長方形の集まりにすぎないことを理解する必要があります。これは1回限りのコードで機能します。ただし、柔軟性はありません。

PDFKitから少し逸脱してもかまわない場合は、いくつかのオプションがあります。

  • テーブルをサポートするPDFKitの フォーク があります。これが 使用する必要があります。
  • PDFKitの上に構築され、テーブルをサポートする pdfmake があります。 Pdfmakeは、PDFKitとは異なり、宣言型構文をサポートしています。

そして、あなたがHTMLについて言及しているのを見て、HTMLがあり、 phantomjs または wkhtmltopdf を使用する場合は、PDFkitを戸外に投げることをお勧めします。 PDFそしてそれはあなたが望むものです。前回これをうまく処理するモジュールを探していたとき、私は phantom-html-to-pdf を見つけました。

6