五分钟上线——函数计算 Word 转 PDF 云服务

本文涉及的产品
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
函数计算FC,每月15万CU 3个月
简介: 函数计算的按调用量收费,动态伸缩特性使其比较适合部署在线转化工具(如:图片裁剪,网页转图片,文字转音频)。这类转换工具通常考虑是 cpp 实现,最终编译成二进制的命令行工具或动态链接库。而函数计算支持多种语言运行时,采用 HTTP 协议进行远程调用,也非常适用于异构模式。

注意: 下面借助于 OSS 解压的方法已经不推荐,仅供学习而保留,对于大文件和依赖目前更推荐 NAS 方案,希望快速上手请移步 https://yq.aliyun.com/articles/718653

函数计算的按调用量收费,动态伸缩特性使其比较适合部署在线转化工具(如:图片裁剪,网页转图片,文字转音频)。这类转换工具通常考虑是 cpp 实现,最终编译成二进制的命令行工具或动态链接库。而函数计算支持多种语言运行时,采用 HTTP 协议进行远程调用,也非常适用于异构模式。本文将介绍如何基于 fc-libreoffice 项目快速搭建一个 Word 转  PDF 的云服务。

fc-libreoffice 是一个基于 nodejs 进行接口封装的 npm,其中内置了针对函数计算 运行时预编译的 libreoffice 。虽然 libreoffice 已经经过裁剪,并使用压缩比较高的 Brotli 算法进行压缩。但最终的压缩包大小为 84M,超过了函数计算 50M 压缩包的大小限制。所以示例项目采用上传 OSS,运行时预下载并解压 libreoffice。下文将侧重于快速搭建 libreoffice 云服务,调用几个脚本封装的 make 命令即可快速体验。

依赖工具

  • docker-ce 安装方法参考官方安装文档
  • fun 一款函数计算的编排工具,用于快速部署函数计算应用。

    MacOS 平台可以使用如下方法安装

    brew tap vangie/formula
    brew install fun

    其他平台可以通过 npm 安装

    npm install @alicloud/fun -g
  • ossutil oss 的命令行工具。将其下载并放置到 $PATH 所在目录。

克隆项目

fc-libreoffiice 项目下有一个 example 项目,进行简单配置就可以快速部署。

# 克隆项目
git clone https://github.com/awesome-fc/fc-libreoffice.git

# 进入示例工程目录
cd fc-libreoffice/example

修改配置文件

# 配置 .env 文件
cp env.example .env

填充 .env 文件里的环境变量

# 阿里云 AK。建议使用主 AK,fun 部署需要角色修改权限。
ALIBABA_CLOUD_ACCESS_KEY_ID=
ALIBABA_CLOUD_ACCESS_KEY_SECRET=

# 阿里云账户 ID。去阿里云账户中心可以查到
ALIBABA_CLOUD_ACCOUNT_ID=

# 部署的 region
ALIBABA_CLOUD_DEFAULT_REGION=

# 用于上传 liboffice 压缩文件的 oss bucket,请先去 oss 控制台创建一个
OSS_BUCKET=

部署函数并验证效果

部署函数,此过程中会安装依赖,上传 OSS,并部署函数到函数计算平台

$ make deploy
.... (此处略去了大量输出内容)

Waiting for service libre-svc to be deployed...
        Waiting for function libre-fun to be deployed...
                Waiting for packaging function libre-fun code...
                package function libre-fun code done
        function libre-fun deploy success
service libre-svc deploy success

调用函数,将预制的 example.docx 文件转换层 example.pdf 文件,并上传到 OSS。

$ make invoke
bin/invoke.sh
+ fcli function invoke -s libre-svc -f libre-fun
{"name":"example.pdf","url":"http://vangie-test.oss-cn-shanghai-internal.aliyuncs.com/example.pdf","res":{"status":200,"statusCode":200,"headers":{"server":"AliyunOSS","date":"Sat, 01 Dec 2018 03:42:25 GMT","content-length":"0","connection":"keep-alive","x-oss-request-id":"5C02032129DDF1C134B9BC7C","x-oss-event-status":"eyJSZXN1bHQiOiAiT2sifQ==","etag":"\"94829EEB576E66A2B5760DD034EECB0B\"","x-oss-hash-crc64ecma":"5833133482735102142","content-md5":"lIKe61duZqK1dg3QNO7LCw==","x-oss-server-time":"60"},"size":0,"aborted":false,"rt":83,"keepAliveSocket":true,"data":{"type":"Buffer","data":[]},"requestUrls":["http://vangie-test.oss-cn-shanghai-internal.aliyuncs.com/example.pdf"],"timing":null,"remoteAddress":"100.118.102.36","remotePort":80,"socketHandledRequests":3,"socketHandledResponses":3}}

从 OSS 下载 example.pdf 到当前目录,查看转换后的结果。

$ make download
bin/download.sh
Succeed: Total num: 1, size: 33,811. OK num: 1(download 1 objects).
0.192966(s) elapsed

下面是转换后的结果,左图为 word 源文件,右图为生成的 pdf 文件。中文和内嵌图片都效果不错。

_2018_12_01_11_47_56

小结

fc-libreoffcie/example 仅仅是一个示例项目,对于正在的生产环境应用,还有不少的优化空间,比如下载文件的完整性校验、流式解压、支持 http 接口输入源文件和输出目标文件、使用 time trigger 进行预热以减少冷启动开销等。上面几个简单的 make 命令背后调用了一些 bash 脚本编写的自动化步骤,这些步骤涉及到一些常用的函数计算领域的方法和技巧,如果您对 libreoffice 的移植过程比较感兴趣可以阅读另一篇文章《手把手教您将 libreoffice 移植到函数计算平台》或者您可以直接阅读 fc-libreoffice 的源码。

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
21天前
|
Java Apache Maven
将word文档转换成pdf文件方法
在Java中,将Word文档转换为PDF文件可采用多种方法:1) 使用Apache POI和iText库,适合处理基本转换需求;2) Aspose.Words for Java,提供更高级的功能和性能;3) 利用LibreOffice命令行工具,适用于需要开源解决方案的场景。每种方法都有其适用范围,可根据具体需求选择。
|
21天前
|
Java Apache Maven
Java将word文档转换成pdf文件的方法?
【10月更文挑战第13天】Java将word文档转换成pdf文件的方法?
95 1
|
3月前
|
Linux Python Windows
Python PDF文件转Word格式,只需要3秒(附打包)
Python PDF文件转Word格式,只需要3秒(附打包)
80 3
Python PDF文件转Word格式,只需要3秒(附打包)
|
3月前
|
Python
Python——将PPT和Word转为PDF文件
Python——将PPT和Word转为PDF文件
63 1
|
3月前
|
Python
还不会免费将PDF转为Word?你可以试试这3种工具!
还不会免费将PDF转为Word?你可以试试这3种工具!
|
4月前
|
人工智能 前端开发 搜索推荐
详解基于百炼平台及函数计算快速上线网页AI助手
通过阿里云百炼平台,企业可在10分钟内为其网站添加智能客服系统,提升用户体验并降低成本。流程包括:创建大模型应用、配置参数(如温度系数以控制回复的随机性)、发布应用获取API密钥;使用函数计算快速搭建示例网站,并通过简单的代码更改启用AI助手功能;还可导入私有知识库增强助手的能力。前端基于NLUX开发,支持定制化需求如样式调整和历史会话管理。服务端代码提供了调用大模型获取答案的接口。借助百炼平台,企业能迅速部署即时且个性化的在线服务,适应数字化转型的需求。
|
4月前
|
JavaScript Java
Java 将Markdown文件转换为Word和PDF文档
【7月更文挑战第5天】Java中使用`Spire.Doc for Java`库可方便地将Markdown转换为Word或PDF。基本步骤包括导入模块,创建`Document`对象,加载Markdown文件,然后保存为目标格式(`.docx`或`.pdf`)。若遇到`Invalid UTF-8 stream`错误,需确保Markdown文件是UTF-8无BOM编码。页面设置可通过`PageSetup`类调整。注意,实际应用会依据具体需求和环境有所调整。
263 6
|
5月前
使用LabVIEW打开默认应用程序中的文档(PDF,Word,Excel,Html)
使用LabVIEW的"Open a Document on Disk.vi",存于<LabVIEW>\vi.lib\Platform\browser.llb,可让默认应用打开硬盘文档。此VI仅基础打开功能,高级控制推荐LabVIEW Report Generation Toolkit或ActiveX。注意:避免版本升级问题,最好将VI复制到vi.lib外的目录。
235 3
|
6月前
|
Java Apache
Java将word、excel文件转成pdf文件
【5月更文挑战第26天】Java将word、excel文件转成pdf文件
1891 1
|
6月前
|
JavaScript 前端开发 Cloud Native
报名开启!2024 开源之夏丨Serverless Devs 课题已上线!
2024 年,Serverless Devs 再次加入中国科学院软件研究所开源软件供应链点亮计划支持下的系列高校开源活动——开源之夏 2024。

热门文章

最新文章

相关产品

  • 函数计算