2016-07-13 76 views
2

我想在客户端使用JavaScript生成pdf文件。首先,我尝试使用jsPdf API。但它不适用于像中文这样的Unicode字符。支持Unicode的JavaScript pdf生成库

是否有任何选项来增强jspdf以支持Unicode或任何其他支持Unicode的库。

Pdfmake API说它支持Unicode,但是当我尝试它也不能工作了,我在那里查看放置Unicode字符的演示示例。

我试着在Node.js的使用pdfkit但没有得到正确创建

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(); 

PDF在PDF作为生成PDF创建! ○ “[禾”[WO “[WO”[W

而且,我可以在pdfMake

添加多个字体
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

'是否有任何选项,以增强jspdf支持Unicode或支持当然Unicode'有办法的任何其他图书馆 - https://github.com/MrRio/jsPDF#contributing。它的opensourced,以便您可以通过该更改为它做出贡献 – llamerr

+0

您是否尝试过在任一项目上检查此问题并在没有项目时创建一个? – llamerr

+0

我还没有尝试创建任何新的库,但试图找到任何库已经存在,以解决我的问题。@ llamerr – Sumeet

回答

2

如何使用Node.js和PDFKit既然你提到它,我将描述一个解决方案,但它也适用于内部使用PDFKitpdfmake

大多数情况下,这些库中使用的默认字体不接受中文字符。您必须添加和使用与您需要支持的语言兼容的字体。如果我们以pdfmake为例,他们使用Roboto作为它们的默认字体,并且它确实不接受中文字符。

使用您的代码示例中,我们可以利用比如Microsoft YaHei字体(微软雅黑)只有1的代码多加一行对中国的支持:

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(); 

输出应该是这样的:

PDF Output

+0

是否有必要为每种不同的Unicode类型字体,我只是尝试与印地语,它需要另一种字体。有什么办法可以支持所有字体或支持多种字体吗? @HiDeo – Sumeet

+0

内置字体仅支持WinANSI编码,因此您确实需要添加字体。诀窍是你可以添加多个字体甚至字体的子集。由于大多数字体仅涵盖UTF-8超过100 000个脚本和符号集的一部分,因此您需要准确识别您需要的内容并找到满足您需求的一种或多种字体。 – HiDeo

+0

我想支持中文/德文/法文/英文/阿拉伯文/拉丁文我可以在哪里下载/获取字体?@HiDeo – Sumeet