2016-07-13 6 views
2

Ich möchte eine pdf-Datei mit JavaScript auf der Clientseite generieren. Zuerst habe ich versucht mit jsPdf API. Aber es funktioniert nicht mit Unicode-Zeichen wie Chinesisch.JavaScript PDF-Generierungsbibliothek mit Unicode-Unterstützung

Gibt es eine Option zur Verbesserung von jspdf zur Unterstützung von Unicode oder einer anderen Bibliothek, die Unicode unterstützt?

Pdfmake API sagt, dass es Unicode unterstützt, aber wenn ich es versuchte, funktioniert es auch nicht, ich checkte dort Demo-Beispiel ein, das Unicode-Zeichen setzt.

Ich versuchte PDFKit in Node.js verwenden, ist aber nicht richtig pdf

var PDFDocument = require("pdfkit"); 
var fs = require('fs'); 

var doc = new PDFDocument; 

doc.pipe(fs.createWriteStream('output.pdf')); 

doc.fontSize(15); 
doc.text('Generate PDF! 漢字漢字漢字漢字'); 

doc.end(); 

im PDF-Format erstellt bekommen es als PDF generieren erstellt! o "[Fr." [Fr. "[Fr." [W

Auch Kann ich mehrere Schriftarten in pdfMake hinzufügen

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

    var printer = new pdfMakePrinter(fontDescriptors); 
+0

'gibt es eine Option jspdf zu verbessern Unicode oder jede andere Bibliothek zu unterstützen, die Unicode' natürlich unterstützt es gibt einen Weg - https://github.com/MrRio/jsPDF#contributing. Es ist so beschaffen, dass Sie mit dieser Änderung dazu beitragen können. – llamerr

+0

haben Sie versucht, in einem der Projekte nach Problemen zu suchen und eines zu erstellen, wenn es keines gibt? – llamerr

+0

Ich habe nicht versucht, eine neue Bibliothek zu erstellen, sondern zu finden, ob eine Bibliothek bereits vorhanden ist, um mein Problem zu lösen. @ Llamerr – Sumeet

Antwort

2

ich eine Lösung unter Verwendung beschreiben würde Node.js und PDFKit, da Sie es erwähnt, aber es gilt auch für pdfmake, die intern PDFKit verwendet.

In den meisten Fällen akzeptiert die in diesen Bibliotheken verwendete Standardschrift keine chinesischen Zeichen. Sie müssen Zeichensätze hinzufügen und verwenden, die für die Sprachen kompatibel sind, die Sie unterstützen müssen. Wenn wir zum Beispiel pdfmake nehmen, verwenden sie Roboto als ihre Standardschriftart und es akzeptiert tatsächlich keine chinesischen Zeichen.

Arbeiten mit dem Codebeispiel, können wir Unterstützung für Chinesisch mit der Microsoft YaHei Schrift (msyh.ttf) zum Beispiel mit nur 1 zusätzliche Codezeile hinzu:

var PDFDocument = require("pdfkit"); 
var fs = require('fs'); 

var doc = new PDFDocument; 

doc.pipe(fs.createWriteStream('output.pdf')); 

doc.font('fonts/msyh.ttf'); 
doc.fontSize(15); 
doc.text('Generate PDF! 漢字漢字漢字漢字'); 

doc.end(); 

Die Ausgabe würde wie folgt aussehen:

PDF Output

+0

Ist es notwendig, Schriftart für jeden anderen Unicode-Typ, habe ich gerade mit Hindi-Sprache versucht, benötigt es eine andere Schriftart . Gibt es eine Möglichkeit, alle Schriften zu unterstützen oder mehrere Schriften in einem zu unterstützen? @HiDeo – Sumeet

+0

Die integrierten Schriftarten unterstützen nur die WinANSI-Codierung, sodass Sie in der Tat Schriftarten hinzufügen müssen. Der Trick ist, dass Sie mehrere Schriftarten oder sogar Untergruppen von Schriftarten hinzufügen können. Da die meisten Schriftarten nur eine Teilmenge der über 100 000 Schriftarten und Symbolsätze von UTF-8 abdecken, müssen Sie genau angeben, was Sie benötigen, und eine oder mehrere Schriftarten finden, die Ihre Anforderungen erfüllen. – HiDeo

+0

Ich möchte Chinesisch/Deutsch/Französisch/Englisch/Arabisch/Latein unterstützen, von wo ich Schriftarten herunterladen/herunterladen kann @HiDeo – Sumeet