1

我知道有两个库可以在浏览器( [1][2] )中使用 Javascript 创建 PDF 文件,但它们都不允许将自定义字体嵌入到文档中。 [2]允许设置自定义字体,但仅限于标准 PDF 字体(Courier、Times-Roman),并且不再积极开发它们。

有谁知道一个仍在积极开发并支持嵌入自定义字体的浏览器中创建 PDF 文件的库?

干杯,

曼努埃尔

4

2 回答 2

3

好的,看起来当前的实现不支持它。所以我正在使用 emscripten 将 libharu 移植到 javascript:

项目: https ://github.com/manuels/hpdf.js

演示: http: //manuels.github.com/hpdf.js/

于 2012-09-28T07:57:06.103 回答
0

如果其他人正在寻找,还有这个:https ://github.com/devongovett/pdfkit

它看起来比 hpdf 更积极地开发,但我无法让它工作仅仅使用带有节点模块 brfs 的 browserify 作为文档提到的(首先 brfs 只适用于静态路径,但它似乎也没有输出原始数据字体正确),我必须这样做才能让它工作:

  • 如果您的字体没有 cmap:打开,然后使用 fontforge 将字体导出为 ttf(在导出选项中带有字形映射)
  • 以字符串格式获取ttf文件的base64(我使用python读取ttf文件的内容,用base64编码,删除换行符,然后保存到另一个文件)
  • 将字符串作为变量粘贴到脚本中
  • 创建一个缓冲区对象,并将其作为字体与 pdfkit 一起传递,即

    fontCenturyGothicBase64 = "your base64 encoded string here";
    fontCenturyGothic = new Buffer(fontCenturyGothicBase64, 'base64');
    
    doc.font(fontCenturyGothic);
    
  • 在javascript文件上使用browserify(Buffer是一个节点对象而不是纯js)

也许不使用 Buffer 对象(因此浏览器化)是可能的,我没有尝试过。

于 2014-05-24T20:41:53.197 回答