Ich habe ein Problem mit pdfmake. Ich möchte eine PDF auf einem node.js-Server erstellen. Ich möchte Daten von einer Datenbank laden und eine nette Tabelle zeichnen und sie einfach in einem Ordner speichern.pdfmake enthält keine Schriften/Texte in 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);
});
Das generierte PDF ist leer. Wenn ich ein Bild hinzufüge, wird es gut eingefügt. Aber keine Schriftart ist enthalten. Der Pfad der Schriftarten (die im Beispiel angegeben sind) ist richtig.
Hat jemand eine Idee, warum keine Schriften eingebettet sind und wie das in node.js gemacht werden kann? Es gibt keine gültigen Beispiele in der PDFmake-Dokumentation.
Nach einiger Fehlersuche, fand ich heraus, dass der App stürzt in fontWrapper.js in dieser Funktion:
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];
};
jemand eine Idee Hat?
Argh ... Die TTF-Dateien beschädigt wurden. Wenn ich eine einfache Arial.ttf verwende, funktioniert es. – IoTMan
Können Sie Ihre Frage als gelöst markieren? – flotto