برنامه نویسی

Docx را به PDF به صورت برنامه ای تبدیل کنید: AWS Lambda & Libreoffice

مقدمه

تبدیل اسناد از DOCX به PDF ضمن حفظ قالب بندی می تواند یک کار چالش برانگیز باشد. بسیاری از کتابخانه ها برای تبدیل اسناد وجود دارند ، اما اغلب در حفظ طرح دقیق ، فونت ها و سبک ها کوتاه می آیند. این یک مسئله مهم برای من بود تا اینکه من یک راه حل کارآمد مبتنی بر ابر را با استفاده از AWS Lambda و Libreoffice در حالت بدون سر کشف کردم.

در این مقاله ، من تجربه خود را برای ایجاد تبدیل سند در ابر با استفاده از AWS Lambda ، Docker و Libreoffice به اشتراک می گذارم ، و یک روش یکپارچه و قابل اعتماد برای پردازش پرونده ها بدون نگرانی در مورد مدیریت سرور ارائه می دهم.


چالش: نگه داشتن قالب بندی دست نخورده

هنگام کار با تبدیل اسناد ، قالب بندی بسیار مهم است. بسیاری از ابزارها می توانند DOCX اصلی را به تبدیل PDF برسانند ، اما خروجی اغلب با سند اصلی متفاوت است. من به راه حلی احتیاج داشتم که:

  • قلم ها ، سبک ها و چیدمان ها را حفظ می کند
  • در یک محیط بدون سرور کار می کند
  • مقیاس و مدیریت آسان است

این زمانی است که من به آنجا رسیدم @قفسه/aws-lambda-libreoffice، یک بسته قدرتمند که Libreoffice را در حالت بی سر و صدا در AWS Lambda اجرا می کند ، و آن را برای پردازش اسناد مبتنی بر ابر مناسب می کند.


راه حل: AWS Lambda با Libreoffice

چرا از AWS Lambda استفاده می کنیم؟

AWS Lambda یک است سرویس محاسبات بدون سرور، به این معنی که نیازی به نگرانی در مورد مدیریت زیرساخت ها نیست. به طور خودکار مقیاس می شود و فقط در صورت لزوم اجرا می شود و آن را مقرون به صرفه و کارآمد می کند. با استفاده از Lambda ، می توانید بدون حفظ سرور اختصاصی ، تبدیل اسناد را به صورت تقاضا پردازش کنید.

چرا libreoffice در حالت بدون سر؟

Libreoffice یکی از قابل اطمینان ترین ابزارهای پردازش اسناد است. هنگام دویدن حالت بی سر، می تواند اسناد را بصورت برنامه ای بدون نیاز به GUI پردازش کند و آن را به یک انتخاب عالی برای تبدیل خودکار تبدیل کند.

dockerizing libreoffice برای aws lambda

از آنجا که AWS Lambda محدودیت های خاصی در اندازه و وابستگی های بسته دارد ، ما باید کانتینر کردن راه حل ما با استفاده از Docker. خوشبختانه ، @قفسه/aws-lambda-libreoffice بسته یک تصویر Docker از پیش تنظیم شده را ارائه می دهد ، که استقرار را ساده می کند.


مراحل تنظیم Docx به PDF در AWS Lambda

1. از یک تصویر docker از پیش ساخته استفاده کنید

برای صرفه جویی در وقت ، من از یک تصویر Docker عمومی استفاده کردم که شامل همه چیز مورد نیاز Libreoffice در AWS Lambda است. در اینجا تصویر پایه وجود دارد:

FROM public.ecr.aws/shelf/lambda-libreoffice-base:7.6-node18-x86_64
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

2. عملکرد AWS Lambda را تنظیم کنید

ما باید یک تابع Lambda AWS ایجاد کنیم که:

  • یک پرونده docx را به عنوان ورودی می پذیرد
  • با استفاده از LibreOffice در حالت بدون سر ، آن را به PDF تبدیل می کند
  • PDF تبدیل شده را برمی گرداند

در اینجا یک اسکریپت Node.js ساده برای رسیدگی به تبدیل وجود دارد:

const { execSync } = require("child_process");
const fs = require("fs");
const path = require("path");

exports.handler = async (event) => {
    const inputFilePath = "/tmp/input.docx";
    const outputFilePath = "/tmp/output.pdf";

    fs.writeFileSync(inputFilePath, Buffer.from(event.body, "base64"));

    execSync(`libreoffice --headless --convert-to pdf --outdir /tmp ${inputFilePath}`);

    const pdfBuffer = fs.readFileSync(outputFilePath);

    return {
        statusCode: 200,
        headers: { "Content-Type": "application/pdf" },
        body: pdfBuffer.toString("base64"),
        isBase64Encoded: true,
    };
};
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

3. تصویر Docker را به AWS ECR بسازید و فشار دهید

پس از تنظیم dockerfile ، تصویر را به رجیستری کانتینر الاستیک AWS (ECR):

docker build -t libreoffice-converter .
docker tag libreoffice-converter:latest .dkr.ecr..amazonaws.com/libreoffice-converter
aws ecr get-login-password --region  | docker login --username AWS --password-stdin .dkr.ecr..amazonaws.com
docker push .dkr.ecr..amazonaws.com/libreoffice-converter
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

4. عملکرد AWS Lambda را مستقر کنید

اکنون ، یک تابع Lambda AWS ایجاد کنید و از آن استفاده کنید کانتینر شما فقط به AWS ECR فشار آورده اید. اطمینان حاصل کنید که این عملکرد دارای حافظه کافی (512MB یا بیشتر) برای رسیدگی به کارآیی تبدیل ها است.

5. تبدیل را تست کنید

برای آزمایش عملکرد ، یک پرونده Docx نمونه بارگذاری کرده و عملکرد Lambda را تحریک کنید. این باید یک PDF با فرمت را بازگرداند و تمام سبک ها و چیدمان ها را حفظ کند.


مزایای این رویکرد

بدون مدیریت سرور – AWS Lambda به طور خودکار اجرا را انجام می دهد.
قالب بندی دقیق -Libreoffice تبدیل با کیفیت بالا را تضمین می کند.
مقیاس پذیری – این عملکرد می تواند چندین تبدیل را بدون زیرساخت های اضافی کنترل کند.
مقرون به صرفه – شما فقط زمان محاسبه را پرداخت می کنید.


پایان

اگر در حالی که قالب بندی را حفظ می کنید با تبدیل به PDF در حال تلاش با تبدیل به PDF هستید ، AWS Lambda با Libreoffice در حالت بدون سر یک راه حل عالی است. با استفاده از اعمال محاسبات بدون سرور وت کانتینر سازی، شما می توانید بدون هیچ دردسر در مدیریت سرورها ، به پردازش اسناد با کیفیت بالا دست یابید.

این مجموعه را امتحان کنید و افکار خود را به من اطلاع دهید! 🚀 اگر به بیشتر علاقه دارید اتوماسیون مبتنی بر ابر راه حل ها ، برای بینش بیشتر دنبال کنید! 💡

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا