国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

aws lambda 轉(zhuǎn)換 office/txt/html 為 pdf

這篇具有很好參考價值的文章主要介紹了aws lambda 轉(zhuǎn)換 office/txt/html 為 pdf。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

簡潔的寫作需要勇氣。讓事物變小是一種深思熟慮的、困難的和有價值的行為。大多數(shù)書籍本應(yīng)是一篇博客文章。大多數(shù)博客文章本應(yīng)是一條微博。大多數(shù)微博本應(yīng)不寫。

aws lambda 轉(zhuǎn)換 office/txt/html 為 pdf

概述

aws lambda

AWS Lambda 是一項(xiàng)無服務(wù)器事件驅(qū)動型計算服務(wù),該服務(wù)使您可以運(yùn)行幾乎任何類型的應(yīng)用程序或后端服務(wù)的代碼,而無需預(yù)置或管理服務(wù)器??梢詮?200 多個 AWS 服務(wù)和軟件即服務(wù) (SaaS) 應(yīng)用程序中觸發(fā) Lambda,且只需按您的使用量付費(fèi)。

為什么選擇使用 aws lambda

文件格式轉(zhuǎn)換是一種非常消耗內(nèi)存和 CPU 的計算,并且存在很多不確定性。如果使用傳統(tǒng)的方式去實(shí)現(xiàn),比如 api + 多線程的方式運(yùn)行,如果在大批量轉(zhuǎn)換的時候,很多失敗的任務(wù)沒有進(jìn)行有效的資源釋放,這很容易引起系統(tǒng)的內(nèi)存泄漏或 CPU 過載。并且如果任務(wù)過多,服務(wù)的橫向擴(kuò)展會變得比較復(fù)雜(實(shí)現(xiàn)橫向擴(kuò)展遠(yuǎn)比轉(zhuǎn)換服務(wù)本身復(fù)雜)。

aws lambda 引入能有效的解決上述產(chǎn)生的問題,通過 lambda + sqs 的方式可以很方便的實(shí)現(xiàn)一個高可用的格式轉(zhuǎn)換服務(wù)。

  • aws lambda 支持 docker 的方式調(diào)用,不管運(yùn)行運(yùn)行環(huán)境多復(fù)雜,也能有效的進(jìn)行環(huán)境打包。
  • 每一個 lambda 函數(shù)的執(zhí)行是獨(dú)立的,失敗任務(wù)不會影響到其他任務(wù)的執(zhí)行。
  • sqs 消息隊列的方式觸發(fā) lambda,可以對任務(wù)過多時進(jìn)行有效的“削峰”處理。

構(gòu)建轉(zhuǎn)換環(huán)境

由于 aws lambda 支持 docker 的方式運(yùn)行,因此我們可以構(gòu)建好基礎(chǔ)的轉(zhuǎn)換服務(wù)運(yùn)行環(huán)境,這樣只需要關(guān)注具體的業(yè)務(wù)邏輯編寫即可。

  • 對于 html 的轉(zhuǎn)換方案,采用 wkhtmltopdf
  • 對于 office(word/excel/powerpoint) 則采用開源的 libreoffice

由于我的業(yè)務(wù)環(huán)境使用 python 居多,因此這里選擇的基礎(chǔ)鏡像為 python:3.7,這同時也是一個基于 Debain 的系統(tǒng)。

html 轉(zhuǎn)換方案

wkhtmltopdf 是一個使用 Qt WebKit 引擎做渲染的,能夠把 html 文檔轉(zhuǎn)換成 pdf 文檔 或 圖片(image) 的命令行工具。支持多個平臺,可在 win,linux,os x 等系統(tǒng)下運(yùn)行。

優(yōu)點(diǎn):

  • 生成 PDF 時會自動根據(jù) HTML 頁面中 H 標(biāo)簽生成樹形目錄結(jié)構(gòu);
  • 小巧方便,轉(zhuǎn)換速度快;
  • 跨平臺,可以在 Liunx 下用,也可以在 win 使用;

下面是 Dockerfile 的關(guān)于安裝 wkhtmltopdf 的命令,其實(shí)過程主要是從 wkhtmltopdf 官網(wǎng)下載對應(yīng)的版本,只有通過 dpkg 進(jìn)行安裝。

# Install wkhtmltopdf
RUN wget -O wkhtmltox_0.12.6.1-2.bullseye_amd64.deb https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox_0.12.6.1-2.bullseye_amd64.deb && \
		apt-get -y update && apt-get -y install xfonts-encodings xfonts-utils xfonts-base xfonts-75dpi && \
		dpkg -i wkhtmltox_0.12.6.1-2.bullseye_amd64.deb  && \
		apt-get -y autoremove && apt-get clean && \
		rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \
		wkhtmltopdf --version

安裝完之后可以通過 python 的 os 調(diào)用系統(tǒng)命令進(jìn)行 html 文件的轉(zhuǎn)換,詳細(xì)的參數(shù)配置選擇可以參考官網(wǎng)。

wkhtmltopdf --page-size A4 --orientation Portrait --dpi 300 --image-dpi 600 --image-quality 94 <input name> <output name>
office 轉(zhuǎn)換方案

對于轉(zhuǎn)換 office 到 pdf,最好的方案是調(diào)用 office 的底層服務(wù),但這會緊緊局限在 windows 平臺,如果要進(jìn)行跨平臺使用,LibreOffice 是一個不錯的選擇,它能最大程度的兼容 word/excel/powerpoint,最終轉(zhuǎn)換效果也是很不錯的。

LibreOffice 在 linux 的安裝會比較復(fù)雜一些,同時需要安裝一些相應(yīng)的字體庫等。其安裝過程可以分為下面三步:

  • 增加 LibreOffice “fresh” PPA
  • 安裝語言包
  • 安裝額外必須的包
  • 安裝 LibreOffice

可以參考這篇文章獲得詳細(xì)的解釋,下面是 Dockerfile 的關(guān)于安裝 LibreOffice 的命令

# Install LibreOffice
RUN	apt-get -y update && apt-get -y dist-upgrade &&\
		apt-get -y install software-properties-common && \
		add-apt-repository -y ppa:libreoffice/ppa && \
		apt-get -y install locales libreoffice libreoffice-writer libreoffice-impress libreoffice-common && \
		apt-get -y install fonts-opensymbol && \
		apt-get -y install hunspell-en-us hyphen-en-us mythes-en-us libreoffice-help-en-us && \
		apt-get -y install libreoffice-l10n-de hunspell-de-de-frami hyphen-de mythes-de libreoffice-help-de && \
		apt-get -y install libreoffice-l10n-fr hunspell-fr-comprehensive hyphen-fr mythes-fr libreoffice-help-fr && \
		apt-get -y install libreoffice-l10n-es hunspell-es hyphen-es mythes-es libreoffice-help-es && \
		apt-get -y install fonts-dejavu fonts-dejavu-core fonts-dejavu-extra fonts-droid-fallback fonts-dustin fonts-f500 fonts-fanwood && \
		apt-get -y install fonts-freefont-ttf fonts-liberation fonts-lmodern fonts-lyx fonts-sil-gentium fonts-texgyre fonts-tlwg-purisa && \
		apt-get -y autoremove && apt-get clean && \
		rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \
		localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 && \
		libreoffice --version

安裝完之后可以通過 python 的 os 調(diào)用系統(tǒng)命令進(jìn)行 html 文件的轉(zhuǎn)換。

libreoffice --headless --convert-to pdf <input name>

注意,如果在 lambda 上運(yùn)行的時候,一定要重新設(shè)置 HOME 路徑到 /tmp 下,否則會因?yàn)闊o權(quán)限創(chuàng)建緩存文件而報錯。

export HOME=/tmp && libreoffice --headless --convert-to pdf <input name>
txt 轉(zhuǎn)換方案

將 txt 轉(zhuǎn)換成 pdf 可以直接借用 libreoffce,命令也是一樣的,如下:

libreoffice --headless --convert-to pdf <input name>

參考文檔

[1] HTML 轉(zhuǎn) PDF 之 wkhtmltopdf 工具簡介 https://www.jianshu.com/p/559c594678b6/
[2] wkhtmltopdf https://wkhtmltopdf.org/downloads.html
[3] Ubuntu18.04中安裝wkhtmltopdf http://events.jianshu.io/p/07c8e7837c7e
[4] How to install LibreOffice 7.4 on Linux Mint, Ubuntu, MX Linux, Debian… https://libre-software.net/linux/ how-to-install-libreoffice-on-ubuntu-linux-mint/
[5] convert-document https://github.com/occrp-attic/convert-document/blob/master/Dockerfile
[6] Converting Office Docs to PDF with AWS Lambda https://gist.github.com/madhavpalshikar/96e72889c534443caefd89000b2e69b5文章來源地址http://www.zghlxwxcb.cn/news/detail-405939.html

到了這里,關(guān)于aws lambda 轉(zhuǎn)換 office/txt/html 為 pdf的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • AWS Lambda 操作 RDS 示例

    AWS Lambda 操作 RDS 示例

    創(chuàng)建一個 Lambda 接收調(diào)用時傳入的數(shù)據(jù), 寫入 RDS 數(shù)據(jù)庫 Post 表存儲文章信息. 表結(jié)構(gòu)如下: id title content create_date 1 我是標(biāo)題 我是正文內(nèi)容 2023-10-21 15:20:00 RDS 控制臺創(chuàng)建 MySQL 實(shí)例, 不允許 Public access (后面 Lambda 需要通過 VPC 訪問) Secrets Manager 控制臺創(chuàng)建 Credentials for Amazon RDS da

    2024年02月08日
    瀏覽(25)
  • AWS中Lambda集成SNS

    AWS中Lambda集成SNS

    在Lambda中,創(chuàng)建名為AWSSNSDemo的函數(shù) 創(chuàng)建名為:SNSTopicTest的主題 ? ? ? ?發(fā)布消息后,在DynamoDB中, 如果檢測到發(fā)布的消息數(shù)據(jù),則說明集成成功。 ?

    2024年02月13日
    瀏覽(25)
  • 使用AWS Lambda函數(shù)的最佳實(shí)踐!

    主題 函數(shù)代碼 函數(shù)配置 指標(biāo)和警報 處理流 安全最佳實(shí)踐 有關(guān) Lambda 應(yīng)用程序最佳實(shí)踐的更多信息,請參閱 Serverless Land 中的?Application design。 從核心邏輯中分離 Lambda 處理程序。這樣您可以創(chuàng)建更容易進(jìn)行單元測試的函數(shù)。在 Node.js 中可能如下所示: 利用執(zhí)行環(huán)境重用來提

    2024年02月07日
    瀏覽(27)
  • 如何使用 AWS Lambda 運(yùn)行 selenium

    借助 AWS Lambda 運(yùn)行 selenium 來爬取網(wǎng)絡(luò)數(shù)據(jù)。 與手動從網(wǎng)站收集數(shù)據(jù)相比,爬蟲可以為我們節(jié)省很多時間,對于爬蟲的每次請求而言,這相當(dāng)于 AWS Lambda 的每次函數(shù)的運(yùn)行。 AWS Lambda 是一種將腳本部署到云的簡單且價格低廉的服務(wù),如果我們要實(shí)現(xiàn)在 AWS Lambda 上運(yùn)行 selenium 實(shí)

    2024年02月03日
    瀏覽(26)
  • 【LaTex】LaTex 的使用與寫作(快速入門,尾附:簡潔的論文模板代碼)

    【LaTex】LaTex 的使用與寫作(快速入門,尾附:簡潔的論文模板代碼)

    在編輯框第一行,輸入以下內(nèi)容來設(shè)置文件類型: 一般也可以在 documentclass 處設(shè)置基本參數(shù)。(如默認(rèn)字體大小為12pt,紙張大小為A4,單面打印。) 則,第一行內(nèi)容需改為: 文件的正文部分需要放入 document 環(huán)境中,在 document 環(huán)境外的部分不會出現(xiàn)在文件中。 加載(amsma

    2024年02月08日
    瀏覽(17)
  • AWS Lambda - 同步/異步調(diào)用,事件源,目標(biāo)

    AWS Lambda - 同步/異步調(diào)用,事件源,目標(biāo)

    Hello大家好,我們今天繼續(xù)討論AWS Lambda的內(nèi)容。 Lambda函數(shù)有三種調(diào)用方式。 第一種方式是同步調(diào)用。 當(dāng)我們使用API、CLI以及API網(wǎng)關(guān)等調(diào)用函數(shù)時,就是同步調(diào)用。 當(dāng)您同步調(diào)用函數(shù)時,Lambda會運(yùn)行該函數(shù)并等待響應(yīng),當(dāng)函數(shù)完成時將結(jié)果同步返回,所以您的代碼將等待這個

    2024年02月10日
    瀏覽(27)
  • 基于 AWS Lambda 的 SaaS 應(yīng)用教程

    在本教程中,我們將探討如何使用 AWS Lambda 構(gòu)建一個簡單的 Software as a Service (SaaS) 應(yīng)用程序。我們的示例應(yīng)用將是一個用于短鏈接生成的服務(wù)。我們將使用 Node.js 來編寫 Lambda 函數(shù),并使用其他 AWS 服務(wù)來管理和擴(kuò)展我們的應(yīng)用。 步驟 1: 準(zhǔn)備工作 確保你已經(jīng)擁有 AWS 賬戶,并

    2024年01月21日
    瀏覽(16)
  • AWS Lambda Golang HelloWorld 快速入門

    AWS Lambda Golang HelloWorld 快速入門

    以下測試基于 WSL2 Ubuntu 22.04 環(huán)境 來到 Lambda 控制臺, 創(chuàng)建新的函數(shù), Runtime 選擇 Go 1.x Code Upload from .zip file 選擇前面編譯并打包的 main.zip 文件上傳. 隨后創(chuàng)建新的 Test 匹配 Lambda 處理的 Event 數(shù)據(jù)格式: Test, 歐耶~報錯了! 返回 Code 標(biāo)簽頁, 看到默認(rèn)的 Handler 設(shè)置的是 hello , 這和我們

    2024年02月07日
    瀏覽(20)
  • AWS中l(wèi)ambda與DynamoDB的集成

    AWS中l(wèi)ambda與DynamoDB的集成

    前言:我在整個集成過程中,存在最大的問題有兩個, 1. 沒有考慮到lambda函數(shù)的權(quán)限,即對DynamoDB或者其他如Kinesis的權(quán)限授權(quán),導(dǎo)致無法寫入或者讀取。 2.最初使用了異步方式調(diào)用,導(dǎo)致無法寫數(shù)據(jù)到DynamoDB,把代碼改成同步調(diào)用即可 ?創(chuàng)建好之后保存,然后進(jìn)行部署(deplo

    2024年02月13日
    瀏覽(17)
  • aws對象存儲s3基于lambda實(shí)現(xiàn)圖片裁剪

    存儲桶名稱:wmmzz 1.存儲桶策略設(shè)置 2. 創(chuàng)建lambda函數(shù) 點(diǎn)擊跳轉(zhuǎn)到IAM控制臺,創(chuàng)建自定義角色,選擇服務(wù)類型lambda,創(chuàng)建策略 輸入策略下一步取名resize-policy,回到創(chuàng)建角色頁面,搜索剛才創(chuàng)建的策略選中,再搜索AmazonS3FullAccess選中 點(diǎn)擊下一步,輸入角色名稱resize-role,點(diǎn)擊“創(chuàng)建角色

    2024年02月11日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包