我正在尝试让 phantom.js 在 heroku 上运行,到目前为止,我已经成功地启动了一个自定义 buildpack 并运行了二进制文件。
但是,似乎为了正确渲染,我还需要安装 Freetype 和 Fontconfig。Heroku 似乎没有它们,我想知道这是否可行,或者我是否需要放弃这个选项并找到另一个解决方案。
有谁知道如何做到这一点?谢谢你。
我正在尝试让 phantom.js 在 heroku 上运行,到目前为止,我已经成功地启动了一个自定义 buildpack 并运行了二进制文件。
但是,似乎为了正确渲染,我还需要安装 Freetype 和 Fontconfig。Heroku 似乎没有它们,我想知道这是否可行,或者我是否需要放弃这个选项并找到另一个解决方案。
有谁知道如何做到这一点?谢谢你。
另一种可能对您有用的方法是在您的应用程序运行的测功机上安装必要的字体作为系统字体。
简而言之:在应用程序启动时将每个字体文件的相关符号链接放入 ~/.fonts/ 。
然后,在应用程序的 vendor/fonts 文件夹中收集您需要的 TTF,版本受控且整洁。
如果您要使用 Ruby on Rails,您可以完全按照以下方式进行操作,但在您的 Node.js 环境中也可能非常可行。
这篇面向 Rails 的博客文章详细介绍了这件事,但这里是作为初始化程序的相关代码,您可以调用 config/initializers/system_fonts.rb:
if Rails.env.production?
font_dir = File.join(Dir.home, ".fonts")
Dir.mkdir(font_dir) unless Dir.exists?(font_dir)
Dir.glob(Rails.root.join("vendor", "fonts", "*")).each do |font|
target = File.join(font_dir, File.basename(font))
File.symlink(font, target) unless File.exists?(target)
end
end
也许您可以简单地使用第三方提出的 phantomjs buildpack。你可以在这里找到:https : //devcenter.heroku.com/articles/third-party-buildpacks 一些第三方 buildpack。其中之一是phantomjs。这个 buildpack 已经包含了 Freetype 和 Fontconfig!
Heroku 不支持基于每个应用程序“安装”二进制文件。相反,它遵循依赖隔离的十二因素原则,该原则建议所有依赖项都是应用程序的包。因此,您将在应用程序结构中包含 Freetype 和 Fontconfig 箱,并调整 PATH 以包含此目录。
根据https://devcenter.heroku.com/articles/cedar-ubuntu-packages fontconfig 应该(现在)在 Cedar-10- 和 Cedar-14-stack 上都可用。