Silurus/ooxml: Render tài liệu DOCX, XLSX, PPTX chuẩn xác trên trình duyệt bằng Rust và Canvas

Công nghệ07 tháng 6, 2026·4 phút đọc

Dự án mã nguồn mở `@silurus/ooxml` cho phép hiển thị các file Office Word, Excel và PowerPoint ngay trên trình duyệt với độ chính xác từng pixel. Điểm độc đáo là toàn bộ mã nguồn ứng dụng được tạo ra bởi Claude AI, sử dụng bộ phân tích cú pháp Rust (WebAssembly) và trình kết xuất Canvas 2D để đảm bảo hiệu suất và bảo mật.

Silurus/ooxml: Render tài liệu DOCX, XLSX, PPTX chuẩn xác trên trình duyệt bằng Rust và Canvas

Silurus/ooxml: Render tài liệu DOCX, XLSX, PPTX chuẩn xác trên trình duyệt bằng Rust và Canvas

Một thư viện mã nguồn mở mới có tên office-open-xml-viewer (gói npm là @silurus/ooxml) đang gây chú ý trong cộng đồng lập trình viên nhờ khả năng hiển thị các tài liệu Office (Word, Excel, PowerPoint) ngay trên trình duyệt web với độ trung thực cao về mặt hình ảnh (pixel-faithful).

NPM VersionNPM Version

Điểm đặc biệt nhất của dự án này là toàn bộ mã ứng dụng — bao gồm các trình phân tích cú pháp (parser) bằng Rust, trình kết xuất (renderer) bằng TypeScript, các bài kiểm tra và công cụ — được thực hiện bởi Claude (trợ lý AI của Anthropic) thông qua việc tương tác lệnh lặp đi lặp lại. Không có bất kỳ mã ứng dụng nào do con người viết trực tiếp trong kho lưu trữ này.

NPM DownloadsNPM Downloads

Kiến trúc và Hiệu suất

Thư viện này được thiết kế để hoạt động hoàn toàn trên phía client-side, không cần phụ thuộc vào máy chủ để chuyển đổi định dạng tệp.

  • Bộ phân tích (Parser): Được viết bằng ngôn ngữ Rust và biên dịch sang WebAssembly (WASM). Điều này giúp xử lý các tệp tin nén ZIP cấu trúc phức tạp của Office (.docx, .xlsx, .pptx) với tốc độ cao ngay trong trình duyệt.
  • Trình kết xuất (Renderer): Sử dụng Canvas 2D API của trình duyệt để vẽ nội dung tài liệu. Mỗi định dạng cũng cung cấp một engine không giao diện (headless engine) như DocxDocument, XlsxWorkbook, PptxPresentation, cho phép nhà phát triển tự do xây dựng giao diện người dùng riêng (cuộn, lưới thu nhỏ, bảng chi tiết) thay vì bị khóa vào giao diện xem mặc định.

Các định dạng được hỗ trợ

Dự án hiện đã hỗ trợ tốt hầu hết các tính năng phổ biến của bộ Office:

Word (.docx)

Hỗ trợ hiển thị trang, kích thước trang, lề, header/footer, ngắt đoạn, văn bản có định dạng phức tạp (in đậm, nghiêng, siêu liên kết, chú thích ký tự Ruby), bảng, hình ảnh và các phương trình Toán học (OMML) thông qua MathJax (tùy chọn).

Excel (.xlsx)

Hỗ trợ nhiều bảng tính (sheets), ô tính với công thức, định dạng ngày tháng, điều kiện màu sắc, đường viền, hình ảnh, biểu đồ (trụ, đường, diện tích, radar...) và cả các đường gợi ý (sparklines). Người dùng có thể chọn ô, sao chép dữ liệu và phóng to/thu nhỏ.

PowerPoint (.pptx)

Hỗ trợ hiển thị slide, bố cục, chủ đề (master), hình dạng (shapes), hình ảnh, nhóm đối tượng, bảng, biểu đồ đa dạng, video và văn bản dọc. Thư viện cũng xử lý tốt các hiệu ứng đổ bóng, viền văn bản và bố cục nhiều cột.

Tích hợp và Cài đặt

@silurus/ooxml là một gói ESM-only (.mjs) và có thể dễ dàng tích hợp vào các dự án JavaScript/TypeScript hiện đại. Nhà phát triển có thể cài đặt thông qua npm hoặc pnpm:

npm install @silurus/ooxml
# hoặc
pnpm add @silurus/ooxml

Thư viện cung cấp các ví dụ tích hợp chi tiết cho các framework phổ biến như React, Vue 3, Angular 19, Svelte, SolidJS và Qwik. Đối với các dự án sử dụng Vite, cần cài thêm vite-plugin-wasm, còn với Webpack thì cần bật tính năng experiments.asyncWebAssembly.

VS Code MarketplaceVS Code Marketplace

Bảo mật và Quyền riêng tư

Một trong những ưu điểm lớn của ooxml là tập trung vào bảo mật khi xử lý tài liệu không tin cậy:

  • Kết xuất chỉ qua Canvas: Tài liệu được giải mã và vẽ trực tiếp lên phần tử HTMLCanvasElement. Không có đoạn script, link hay biểu mẫu nào từ tệp tin gốc được thực thi hoặc chèn vào DOM, ngăn chặn các cuộc tấn công XSS.
  • Chống Zip Bomb: Mỗi tệp trong archive giải nén bị giới hạn kích thước 512 MiB mặc định để ngăn chặn tấn công từ chối dịch vụ (DoS).
  • Không kết nối mạng mặc định: Thư viện không gửi telemetry hoặc phân tích. Các phông chữ web (Webfonts) không được tải từ Google Fonts trừ khi người dùng chủ động bật tính năng này, giúp tuân thủ tốt các quy định về quyền riêng tư như GDPR.

Ngoài thư viện cốt lõi, dự án còn bao gồm các gói mở rộng như CLI chuyển đổi sang Markdown, bộ phân tích cho Node.js, và một máy chủ MCP (Model Context Protocol) để hỗ trợ các tác nhân AI đọc và phân tích tệp OOXML.

Đây là một giải pháp hứa hẹn cho các nhà phát triển web muốn xây dựng tính năng xem trước tài liệu Office mạnh mẽ, an toàn mà không cần phụ thuộc vào các dịch vụ backend nặng nề hay các phần mềm thương mại.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗