【问题标题】:Install a new font on AWS Lamba在 AWS Lambda 上安装新字体
【发布时间】:2018-08-01 05:31:12
【问题描述】:

我正在 AWS Lambda 上安装 Imagemagick,但似乎没有预装 Imagemagick 通常使用的字体,如何添加其他字体?

【问题讨论】:

  • 如果您提供字体文件的路径(带后缀)而不仅仅是名称,它是否有效?

标签: aws-lambda


【解决方案1】:

你不能。

您甚至可以将 Imagemagick 与您的 lambda 一起使用的原因是 AWS Lambda 团队已经在他们的容器上预安装了这个库。

这对于在 NodeJS 上运行的 Lambda 来说是正确的——它具有用于操作安装在您的操作系统上的 Imagemagick 的库,但它本身并不运行。

您应该使用 C#/Java 运行时进行检查 - 可能有 Imagemagick 库,您可以将其添加到您的 Lambda(不确定)。

【讨论】:

  • hi...所以 Imagemagick 是预装的,可以通过 PHP 使用 imagemagick 函数吗,就像我们平时使用的一样,EX:$img = newImagick('image.jpg');
  • 为了提供更多背景信息,我需要用于 moviepy 的 imagemagick。我已经将自己的 Imagemagick 添加到我的 lambda 包中,然后我指示moviepy 指向正确版本的 Imagemagick,如下所示: from moviepy.config import change_settings IMAGEMAGICK_BINARY = os.path.join(SCRIPT_DIR, 'imagemagick/bin/魔法')
  • 您可以使用子进程调用从 Python 调用 ImageMagick。见imagemagick.org/discourse-server/viewtopic.php?f=4&t=32920。如果使用 ImageMagick 7,则将 convert 更改为 magick。
【解决方案2】:

这是我刚刚使用 pandoc/xelatex 在 AWS Lambda 上为自定义字体工作的内容。我假设你可以做一些非常相似的事情来让 Imagemagick 正常工作。

我在我的项目中创建了一个fonts 目录并将我的所有字体都放在那里。同样在该目录中,我创建了一个 fonts.conf 文件,如下所示:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <dir>/var/task/fonts/</dir>
  <cachedir>/tmp/fonts-cache/</cachedir>
  <config></config>
</fontconfig>

然后在我的(基于 node.js 的)处理函数中,在调用 pandoc 之前,我设置了一个 ENV var 来告诉 fontconfig 在哪里可以找到字体。

process.env.FONTCONFIG_PATH='/var/task/fonts'

之后,我可以在我的模板中按名称(只是 Bitter)引用字体,例如 Bitter,然后 pandoc/xelatex/fontconfig/whatever 知道要使用哪个版本的字体(例如 @987654328 @ vs Bitter-Italic.otf) 基于任何文本应该具有的样式。

我是根据这个项目中关于让 RSVG 在 Lambda 上使用自定义字体的技巧来解决这个问题的:https://github.com/claudiajs/rsvg-convert-aws-lambda-binary/blob/master/README.md#using-custom-fonts

【讨论】:

  • 谢谢,这就是我使用 WkHtmlToPdf 解决方案的原因。我不确定如何在我的模板 (CSS) 中引用字体。
猜你喜欢
  • 1970-01-01
  • 2017-02-15
  • 1970-01-01
  • 2016-10-20
  • 1970-01-01
  • 2019-11-09
  • 1970-01-01
  • 1970-01-01
  • 2017-11-27
相关资源
最近更新 更多