pdfmakeに問題があります。私はnode.jsサーバー上でPDFを生成したいと思います。私はデータベースからデータをロードして素敵なテーブルを描画し、それを単にフォルダに保存したいと思います。pdfmakeにはnode.jsのフォント/テキストは含まれていません
var pdfMakePrinter = require('pdfmake/src/printer');
...
var fonts = {
Roboto: {
normal: './fonts/Roboto-Regular.ttf',
bold: './fonts/Roboto-Medium.ttf',
italics: './fonts/Roboto-Italic.ttf',
bolditalics: './fonts/Roboto-Italic.ttf'
}
};
var PdfPrinter = require('pdfmake/src/printer');
var printer = new PdfPrinter(fonts);
var docDefinition = {
content: [
'First paragraph',
'Another paragraph, this time a little bit longer to make sure, this line will be divided into at least two lines'
]
};
var pdfDoc = printer.createPdfKitDocument(docDefinition);
pdfDoc.pipe(fs.createWriteStream('pdf/basics.pdf')).on('finish', function() {
res.send(true);
});
生成されたPDFは空です。イメージを追加すると、イメージがうまく挿入されます。しかし、フォントは含まれていません。フォントのパス(サンプルで与えられている)は正しいです。
アイデアはありますか?なぜフォントが埋め込まれていないのか、これがnode.jsでどのように行われるのでしょうか? pdfmakeのマニュアルには有効なサンプルはありません。
は、いくつかのデバッグの後、私はこのfunktionでfontWrapper.jsでアプリがクラッシュすること、が分かった:
FontWrapper.prototype.getFont = function(index){
if(!this.pdfFonts[index]){
var pseudoName = this.name + index;
if(this.postscriptName){
delete this.pdfkitDoc._fontFamilies[this.postscriptName];
}
this.pdfFonts[index] = this.pdfkitDoc.font(this.path, pseudoName)._font; <-- Crash
if(!this.postscriptName){
this.postscriptName = this.pdfFonts[index].name;
}
}
return this.pdfFonts[index];
};
誰もがアイデアを持っていますか?
なんてこった...の下に同じ機能のための例を作成しました
フォントパスbefor
process.cwd().split('.meteor')[0]
を追加します。私は単純なArial.ttfを使用すると動作します。 – IoTManあなたの質問に解決済みとマークできますか? – flotto