Thursday , 4 June 2026

Convert Office Sang PDF Trên Linux Dễ Dàng Bằng LibreOffice + Flask + Docker

Bài viết này hướng dẫn cách convert Office sang PDF trên Linux bằng cách xây dựng một API service nhỏ gọn với LibreOffice headless, Flask và Docker — chạy ổn định trên server, dễ tích hợp vào backend hoặc pipeline OCR.

Bối cảnh thực tế: khi xử lý OCR file Word/Excel/PowerPoint chứa ảnh nhúng, bước bắt buộc là phải convert sang PDF trước rồi mới OCR được. Trên Windows có docx2pdf, win32com hỗ trợ sẵn, nhưng khi hệ thống chạy trên Linux (server, container, CI/CD) thì cần giải pháp khác. LibreOffice headless là lựa chọn thực tế nhất.

Convert Office sang PDF trên Linux bằng LibreOffice Flask Docker


Khi Nào Nên Dùng Giải Pháp Convert Office Sang PDF Này?

Giải pháp này phù hợp cho:

  • Hệ thống nội bộ, backend hoặc microservice
  • Tải nhẹ đến trung bình (~10 file/phút)
  • Yêu cầu layout gần giống Windows (có xử lý font tiếng Việt)

Không phù hợp cho hệ thống tải cao trên 30 file/phút hoặc real-time quy mô lớn.

Luồng xử lý tổng quan:


Tính Năng Chính Của Service Convert Office Sang PDF

  • Hỗ trợ hầu hết định dạng Office mà LibreOffice đọc được: .docx, .xlsx, .pptx, .odt, .csv, .html…
  • Giới hạn số process LibreOffice chạy song song — tránh treo server
  • Mỗi request dùng profile LibreOffice riêng biệt — tránh crash do xung đột
  • Có timeout khi convert, tự động cleanup file tạm
  • Dễ build và deploy bằng Docker

Cấu trúc project:


Nội Dung File app.py — Flask API Convert Office Sang PDF


Dockerfile — Cài LibreOffice và Font

LibreOffice trong Docker mặc định thiếu font, dễ gây mất dấu tiếng Việt hoặc sai layout so với Windows. Dockerfile dưới đây cài sẵn các font thông dụng bao gồm Noto CJK để xử lý tiếng Việt.

docker-compose.yml

Build và chạy service

Test API


Xử Lý Font Windows (Times New Roman, Arial…)

Nếu tài liệu dùng font Windows, cần copy font vào image để giữ đúng layout khi convert Office sang PDF:

  1. Copy file .ttf từ thư mục C:\Windows\Fonts trên máy Windows
  2. Đặt vào thư mục fonts/ trong project
  3. Thêm lệnh COPY vào Dockerfile và chạy lại fc-cache -f -v để rebuild font cache

Lưu ý bản quyền font — chỉ nên dùng cho hệ thống nội bộ, không phân phối image công khai kèm font Windows.


Giới Hạn Cần Biết

  • Không hỗ trợ file có password
  • Không chạy macro VBA
  • Animation trong PowerPoint sẽ render tĩnh
  • Không phù hợp tải cao trên 30 file/phút

Tổng Kết

Với stack LibreOffice + Flask + Docker, bạn có ngay một service convert Office sang PDF chạy hoàn toàn trên Linux, không phụ thuộc Windows hay bất kỳ dịch vụ cloud nào. Đây là nền tảng tốt để mở rộng thêm các tính năng như OCR bằng pytesseract, convert ngược PDF sang Office, hoặc xếp hàng xử lý với Redis/RabbitMQ khi cần tải lớn hơn.

Tham khảo thêm các bài viết kỹ thuật tại tungle.blog, chuyên mục Thủ thuật, hoặc xem thêm bài liên quan đến xử lý file tự động.

Tài liệu chính thức LibreOffice headless tại wiki.documentfoundation.org.

Bạn đang dùng giải pháp nào để convert Office sang PDF trên server? Hay bạn gặp vấn đề gì với font tiếng Việt khi chạy LibreOffice trong Docker? Để lại bình luận bên dưới — tôi rất muốn nghe!

About Tung Le

Cài win 10000 lần

Check Also

xem disk và partition trên Linux

Xem Disk Và Partition Trên Linux Hiệu Quả Bằng 7 Lệnh Thực Tế

Biết cách xem disk và partition trên Linux là kỹ năng cơ bản cần có …

Leave a Reply