Node.js 如何在IBMCloudNodeJS运行时中安装字体?(云铸造)

Node.js 如何在IBMCloudNodeJS运行时中安装字体?(云铸造),node.js,ibm-cloud,cloud-foundry,node-html-pdf,phantomjs-node,Node.js,Ibm Cloud,Cloud Foundry,Node Html Pdf,Phantomjs Node,我使用html pdf组件在我的nodejs应用程序中生成pdf报告,为了在pdf文档中正确嵌入自定义字体,这些字体必须安装在服务器中,在这种情况下,安装在IBM Cloud nodejs运行时中。我该怎么做呢?你要么让它们成为静态内容,然后用你的应用程序推送它们,要么下载它们。下载可以是动态的,也可以在package.json中作为依赖项。有许多字体软件包可用于此目的。据我所知,您正在尝试从静态html文件生成pdf,这些文件使用系统上已安装的字体,从而使系统的可用字体可靠。为什么不修复css

我使用html pdf组件在我的nodejs应用程序中生成pdf报告,为了在pdf文档中正确嵌入自定义字体,这些字体必须安装在服务器中,在这种情况下,安装在IBM Cloud nodejs运行时中。我该怎么做呢?

你要么让它们成为静态内容,然后用你的应用程序推送它们,要么下载它们。下载可以是动态的,也可以在package.json中作为依赖项。有许多字体软件包可用于此目的。

据我所知,您正在尝试从静态html文件生成pdf,这些文件使用系统上已安装的字体,从而使系统的可用字体可靠。为什么不修复css中的字体并将其嵌入为base64编码字体?我曾经使用这个网站创建:

这些字体必须安装在IBMCloud运行时中(基本上是一个VM)。只是将字体添加到node.js应用程序路径并不能起作用。我不确定我是否理解。推送应用程序时,静态内容会随应用程序一起推送(css、图像等)。字体可以是其中的一部分。对于IBM Plex字体,您的代码可能依赖于一个包。html-pdf依赖于phantomjs。Phantomjs读取包含引用自定义字体的css的html,但在生成pdf时,如果操作系统中未安装字体,则不会嵌入字体。因此,仅仅将字体作为节点依赖项添加是不起作用的,因为基本上phantomjs和HTMLPDF都已损坏。因此,这里唯一的解决方法是在VM实例化之后,尝试在ibmcloud运行时(我认为这只是一些默认的docker映像)上自动安装字体。问题是IBM Cloud运行时似乎没有这种灵活性。相反,我必须创建自己的节点docker映像,在正确的位置包含字体,或者,我可以尝试在VM准备好触发服务器中缺少字体的安装后添加一些钩子,但我觉得这不是正确的方法。你是说IBM云上的云铸造,Kubernetes/Container还是VM(ware)?这只是猜测。如果环境基于debian/ubuntu,则可以在$USER/.fonts中安装本地字体;如果环境受到严格限制,则在nodejs启动时发出shell命令,命令行为“mkdir-p~/.fonts”,将字体从应用程序目录复制到字体目录child_process.exec fc cache-f-v,然后继续。。。我将此作为一条评论添加,因为未经测试且命令不准确