
前言
首先介绍下在本文出现的几个比较重要的概念:
函数计算(Function Compute):函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。
Fun:Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API 网关、日志服务等资源。它通过一个资源配置文件(template.yml),协助您进行开发、构建、部署操作。
Ghostscript:Ghostscript 是一套建基于Adobe、PostScript及可移植文档格式(PDF)的页面描述语言等而编译成的自由软件。
备注: 本文介绍的技巧需要 Fun 版本大于等于 3.0.0-beta.2 。
依赖工具
本项目是在 MacOS 下开发的,涉及到的工具是平台无关的,对于 Linux 和 Windows 桌面系统应该也同样适用。在开始本例之前请确保如下工具已经正确的安装,更新到最新版本,并进行正确的配置。
Docker
Fun
Fun 工具依赖于 docker 来模拟本地环境。
对于 MacOS 用户可以使用 homebrew 进行安装:
Windows 和 Linux 用户安装请参考:
https://github.com/aliyun/fun/blob/master/docs/usage/installation.md
安装好后,记得先执行 fun config 初始化一下配置。
注意, 如果你已经安装过了 fun,确保 fun 的版本在 3.0.0-beta.2 以上。
Linux 下将 PDF 转换成 JPG
函数计算默认的 linux 环境是 Debian Jessie,首先我们先解决 Debain Jessie 环境下如何将 PDF 文件转换成 JPG 文件的问题。使用 fun install sbox 启动一个沙箱环境,在沙箱环境进行如下操作:
其中转换命令为:
gs-sDEVICE=jpeg-dTextAlphaBits=4-r144-otest.jpg test.pdf
其选项为
-sDEVICE=jpeg 指定输出设备为 jpeg,另外一个可选值为 jpeggray。
-o 指定输出文件
-dTextAlphaBits 指定文本采样抗锯齿,另一个类似的选项为 -dGraphicsAlphaBits 用于图像采样抗锯齿。
-r144 设定图像的 dpi 为 144。
移植到函数计算
下面我们将上面在 sbox 中 ghostscript 转换的实验成果移植到函数计算的 nodejs10 runtime 中。首先初始化一个本地的 fun 项目,借助于 fun 可以本地方便地安装依赖,本地调试并打包上传。
初始化项目
将 template.yml 的内容更新为
其中环境变量 GS_LIB 是为了支持 ghostscript 安装在代码目录所需要的。
将 index.js 的内容更新为
安装 ghostscript
使用如下命令安装 ghostscript
ghostscript 会被安装到当前目录下的 .fun 目录内
本地测试
在代码目录放一个 test.pdf 文件
然后通过 fun local invoke 本地调用
生成的 test.jpg 文件可以在 .fun/tmp/invoke 目录下找到
部署并调用
通过 fun deploy 命令快捷部署到函数计算平台
使用 fun invoke <function_name> 调用函数。

识别二维码测试你的云职业,领取会员大礼包!

