大数跨境
0
0

开发函数计算的正确姿势——借助 Ghostscript 将 PDF 转换成 JPG

开发函数计算的正确姿势——借助 Ghostscript 将 PDF 转换成 JPG 阿里云云栖号
2019-09-07
0


前言


首先介绍下在本文出现的几个比较重要的概念:


函数计算(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> 调用函数。



更多精彩


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



如果觉得本文还不错,点击在看一下!
点此进入测试你的云职业并领取会员大礼包
【声明】内容源于网络
0
0
阿里云云栖号
云栖官方内容平台,汇聚云栖365优质内容。
内容 3553
粉丝 0
阿里云云栖号 云栖官方内容平台,汇聚云栖365优质内容。
总阅读366
粉丝0
内容3.6k