FileDummy Logo
FileDummy
Xử Lý & Chuyển Đổi Định Dạng

Phân Tích Tệp DOCX Thành HTML & Markdown Với Mammoth.js Trong JavaScript

Chuyển đổi tài liệu Word (.docx) sang HTML ngữ nghĩa sạch sẽ với Mammoth.js trong Node.js và trình duyệt. File mẫu DOCX 10MB kiểm thử.

29 tháng 9, 20269 phút đọc1,420 lượt xem
nodejsdocxmammothword-processingtext-extraction

Phân tích tài liệu Microsoft Word (.docx) thành HTML sạch hoặc Markdown là yêu cầu thiết yếu trong các hệ thống quản lý nội dung, công cụ phân tích CV, và công cụ nhập blog. Thư viện mammoth.js chuyển đổi tài liệu OpenXML với trọng tâm vào các phần tử HTML ngữ nghĩa.

Cài Đặt mammoth

Terminal
npm install mammoth
Thử Nghiệm Thực Tế.docx

Tải file DOCX mẫu 10MB chứa định dạng, bảng biểu và tiêu đề để kiểm thử Mammoth.

Tải File Mẫu 10MB DOCX →

Trích Xuất HTML Ngữ Nghĩa và Markdown Trong Node.js

TypeScript
import mammoth from 'mammoth';
import fs from 'fs';

export async function convertDocxToHtml(filePath: string): Promise<string> {
  const buffer = fs.readFileSync(filePath);

  const result = await mammoth.convertToHtml({ buffer }, {
    styleMap: [
      "p[style-name='Heading 1'] => h1:fresh",
      "p[style-name='Heading 2'] => h2:fresh",
      "p[style-name='Lead'] => p.lead:fresh",
      "r[style-name='Emphasis'] => em",
    ],
  });

  if (result.messages.length > 0) {
    console.log('Cảnh báo chuyển đổi Mammoth:', result.messages);
  }

  return result.value; // Chuỗi HTML đã được render
}

export async function extractRawDocxText(filePath: string): Promise<string> {
  const buffer = fs.readFileSync(filePath);
  const result = await mammoth.extractRawText({ buffer });
  return result.value;
}

Phân Tích DOCX Trực Tiếp Trên Trình Duyệt

Mammoth chạy được trực tiếp trên trình duyệt sử dụng FileReader:

TypeScript
import mammoth from 'mammoth';

export async function parseDocxFileInBrowser(file: File): Promise<string> {
  const arrayBuffer = await file.arrayBuffer();
  const { value: html } = await mammoth.convertToHtml({ arrayBuffer });
  return html;
}

Ưu Điểm Của Mammoth So Với Regex Thủ Công

  • Cấu trúc ngữ nghĩa: Chuyển đổi kiểu đoạn văn Word thành các thẻ <h1>, <p>, và <ul> thực sự thay vì các span có inline style.
  • Đầu ra HTML an toàn: Tự động làm sạch đầu ra và mã hóa ký tự đặc biệt để ngăn chặn tấn công stored XSS.
NDL

Nguyễn Đại Long

Tác Giả

Backend Lead • Chuyên gia Kiến trúc Hệ thống Phân tán & Lưu trữ Đám mây

Hơn 4 năm kinh nghiệm thiết kế các hệ thống xử lý tệp tải lên thông lượng lớn, tối ưu hóa cơ sở dữ liệu và hạ tầng phân tán Cloudflare R2 / AWS S3. Người sáng lập FileDummy và Mạng lưới Hệ sinh thái NDL.

Bài viết này có hữu ích không?

Bấm Thích để ủng hộ tác giả và giúp bài viết lan tỏa tới cộng đồng lập trình viên.

Thảo Luận Kỹ Thuật & Đóng Góp Ý Kiến (0)

Chia sẻ kết quả benchmark, phản hồi các trường hợp biên hoặc đặt câu hỏi chuyên môn.

0/3000

Chưa có bình luận nào. Hãy là lập trình viên đầu tiên bắt đầu cuộc thảo luận!

Câu Hỏi Thường Gặp (FAQ)

What is mammoth.js and what does it do?▾

mammoth.js converts DOCX files to HTML or plain text. It reads the OpenXML ZIP structure, maps Word styles (Heading 1 → h1, Bold → strong) to HTML, and outputs clean semantic HTML.

Does mammoth.js preserve tables and images?▾

Tables are converted to HTML table elements. Embedded images can be extracted as base64 data URIs using a custom convertImage handler in the options. Unsupported formatting is silently ignored.

What alternatives to mammoth.js exist for DOCX parsing?▾

Alternatives include docxtemplater (commercial), LibreOffice headless conversion, and Apache POI (Java). For DOCX creation, use the docx npm package.

Bài Viết Liên Quan