JavaScript 支持 Unicode 的 pdf 生成库

JavaScript pdf generation library with Unicode support

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

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

Pdfmake API 说它支持 Unicode 但当我尝试时它也不起作用,我检查了放置 Unicode 字符的演示示例。

我尝试在 Node.js 中使用 pdfkit,但未正确创建 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();

在 pdf 中,它创建为生成 PDF! o[Wo][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);

我将使用 Node.js 和 PDFKit since you mentioned it but it also applies to pdfmake which internally uses PDFKit 描述一个解决方案。

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

使用您的代码示例,我们可以使用 Microsoft YaHei 字体 (msyh.ttf) 添加对中文的支持,例如仅需 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();

输出将如下所示: