在浏览器中创建PDF:自定义字体

时间:2012-09-25 18:26:32

标签: javascript pdf fonts browser

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

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

干杯,

曼努埃尔

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:0)

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

它看起来比hpdf更加积极,但我无法使用浏览器与节点模块brfs一样工作(首先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(缓冲区是节点对象而不是纯粹的js)

也许没有使用Buffer对象(因此浏览器化),我还没有尝试过。