2017-07-19 4 views
1

Es sieht so aus question wurde asked etliche times mit älteren Versionen von pdfMake, aber wurde nicht mit der scheinbar neuesten Verzeichnisstruktur aktualisiert. Außerdem ist das Kopieren von Schriftarten in einen Stammordner "Schriftarten" nicht großartig. Wie in der Welt bekomme ich eine serverseitige Version von pdfMake ("pdfmake": "^ 0.1.31") auf NodeJs mit der enthaltenen vfs_fonts.js Datei?Wie erstellt man ein pdf auf NodeJs mit pdMake und vfs_fonts?

Installieren npm auf Befehlszeile

npm install pdfmake fs --save 

Boot-up ein NodeJS App index.js mit den folgenden:

var fonts = { 
    Roboto: { 
     normal: 'fonts/Roboto-Regular.ttf', 
     bold: 'fonts/Roboto-Medium.ttf', 
     italics: 'fonts/Roboto-Italic.ttf', 
     bolditalics: 'fonts/Roboto-MediumItalic.ttf' 
    } 
}; 

var PdfPrinter = require('pdfmake/src/printer'); 
var printer = new PdfPrinter(fonts); 

var dd = { 
    content: [ 
     'First paragraph', 
     'Another paragraph' 
    ] 
} 
var pdfDoc = printer.createPdfKitDocument(dd); 
pdfDoc.pipe(fs.createWriteStream('basics.pdf')).on('finish',function(){ 
    //success 
}); 
pdfDoc.end(); 

Hit Lauf und bam:

/usr/local/bin/node index.js 
fs.js:640 
    return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode); 
       ^

Error: ENOENT: no such file or directory, open 'fonts/Roboto-Regular.ttf' 
    at Error (native) 
    at Object.fs.openSync (fs.js:640:18) 

Die Problem scheint mit dem Speicherort der Schriften/Roboto ... Dateien zu liegen. Clientseitig wird dies durch die Aufnahme der Datei vfs_fonts.js gelöst. Serverseitig bin ich mir nicht sicher. Es sind keine fonts folder or .ttf files enthalten. Das Meteor-Framework example habe ich gefunden scheint nicht anwendbar.

Irgendwelche Ideen? Alle offiziellen examples verweisen auf einen Ordner src/fonts. Keine gute Möglichkeit, ein npm Installationsservermodul zu installieren.

+0

Sie müssen die Roboto-Schriftart nicht auf der Serverseite einschließen, sie ist standardmäßig verfügbar. Wenn Sie benutzerdefinierte Schriftarten benötigen, dann müssen Sie die Schritte unter https://github.com/bpampuch/pdfmake/wiki/Custom-Fonts---client-side gehen –

Antwort

0

Sie müssen zuerst die Roboto-Schriftart hier https://fonts.google.com/specimen/Roboto herunterladen und sie in Ihrem Schriftarten-Ordner kopieren. Aktualisieren Ihre Schriften wie dieses Objekt:

var fonts = { 
    Roboto: { 
    normal: path.join(__dirname, '..', 'your_public_folder', '/fonts/Roboto-Regular.ttf'), 
    bold: path.join(__dirname, '..', 'your_public_folder', '/fonts/Roboto-Medium.ttf'), 
    italics: path.join(__dirname, '..', 'your_public_folder', '/fonts/Roboto-Italic.ttf'), 
    bolditalics: path.join(__dirname, '..', 'your_public_folder', '/fonts/Roboto-MediumItalic.ttf') 
    } 
} 

In diesem Beispiel ersetzen die ‚your_public_folder‘ mit Ordnernamen, wo Sie alle Ihre HTML, CSS und JS-Dateien.

+0

Vielen Dank für die Hilfe, aber ich habe gesucht etwas anderes: "Plus, das Kopieren von Schriftarten in einen Stammordner" fonts "ist nicht großartig. Wie in der Welt bekomme ich eine serverseitige Version von pdfMake (" pdfmake ":"^0.1.31 ") ausgeführt auf NodeJs mit der enthaltenen vfs_fonts.js Datei? " –

+0

Die Datei ** vfs_fonts.js ** ist nur erforderlich, wenn Sie pdfMake auf der ** Clientseite ** verwenden möchten. Diese Datei ist eine Binärdatei, die die Schriftarten enthält. Sie müssen diese Datei nicht erstellen, um sie mit nodejs zu verwenden. In Nodejs müssen Sie einen Pfad mit Ihren Fonts angeben, wie ich zuvor geantwortet habe. – Harry

Verwandte Themen