Việc chuyển đổi các trang HTML phong phú thành các tệp DOCX có thể chỉnh sửa là một nhu cầu thường gặp trong các quy trình báo cáo và tự động hoá tài liệu. GroupDocs.Conversion Cloud SDK for Node.js cho phép các nhà phát triển thực hiện chuyển đổi này hoàn toàn thông qua một thư viện dựa trên REST. Trong hướng dẫn này, bạn sẽ thấy cách thiết lập SDK, viết mã Node.JS thực hiện chuyển đổi HTML sang DOCX trong Node.JS, sử dụng cURL để gọi API, và áp dụng các tùy chọn cấu hình để đạt kết quả tối ưu.

Các yêu cầu và cài đặt

Trước khi bắt đầu, hãy chắc chắn rằng bạn đã có những thứ sau:

  • Node.js 14 hoặc mới hơn được cài đặt trên máy phát triển của bạn.
  • Một tài khoản GroupDocs.Conversion Cloud đang hoạt động (bạn có thể đăng ký dùng thử miễn phí trên trang sản phẩm).
  • Client IDClient Secret của bạn từ bảng điều khiển GroupDocs Cloud.
  • Kết nối internet để gọi API REST đám mây.

Cài đặt SDK qua npm:

npm install groupdocs-conversion-cloud

Tải xuống gói mới nhất và xem mã nguồn trên GitHub nếu bạn cần khám phá mã:

Tải xuống GroupDocs.Conversion Cloud SDK for Node.js

Sau khi đã cài đặt SDK và chuẩn bị xong thông tin xác thực, bạn có thể tiếp tục thực hiện.

Chuyển đổi HTML sang DOCX trong Node.JS: Hướng dẫn từng bước

Dưới đây là một hướng dẫn ngắn gọn thể hiện từng bước logic. Mã nguồn đầy đủ sẽ được cung cấp sau.

Bước 1: Khởi tạo Conversion API Client

Tạo một thể hiện của ConversionApi và cấu hình xác thực.

const { ConversionApi, Configuration } = require('groupdocs-conversion-cloud');

const config = new Configuration({
    clientId: 'YOUR_CLIENT_ID',
    clientSecret: 'YOUR_CLIENT_SECRET'
});

const conversionApi = new ConversionApi(config);

Bước 2: Tải lên tệp nguồn HTML

Tải lên tệp HTML mà bạn muốn chuyển đổi. API trả về một định danh tệp mà bạn sẽ sử dụng để chuyển đổi.

const fs = require('fs');
const path = require('path');

const htmlPath = path.resolve(__dirname, 'sample.html');
const fileBytes = fs.readFileSync(htmlPath);

const uploadResponse = await conversionApi.uploadFile({
    file: fileBytes,
    fileName: 'sample.html'
});
const sourceFileId = uploadResponse.id;

Bước 3: Thiết lập tùy chọn chuyển đổi

Cấu hình bất kỳ tùy chọn đặc thù cho DOCX, chẳng hạn như nhúng phông chữ hoặc thiết lập lề trang. Bước này trình bày việc tùy chỉnh DOCX Generation from HTML.

const convertSettings = {
    outputFormat: 'DOCX',
    options: {
        embedFonts: true,
        pageSize: 'A4',
        marginTop: 20,
        marginBottom: 20,
        marginLeft: 15,
        marginRight: 15
    }
};

Bước 4: Thực hiện chuyển đổi

Gọi phương thức convert với ID tệp nguồn và các cài đặt đã được định nghĩa ở trên.

const convertResponse = await conversionApi.convert({
    fileId: sourceFileId,
    convertSettings: convertSettings
});
const docxFileId = convertResponse.id;

Bước 5: Tải xuống tệp DOCX kết quả

Lấy tệp DOCX đã tạo và lưu nó cục bộ.

const docxData = await conversionApi.downloadFile({ fileId: docxFileId });
fs.writeFileSync(path.resolve(__dirname, 'output.docx'), docxData);
console.log('DOCX file saved as output.docx');

Các bước trên minh họa một quy trình HTML sang DOCX trong Node.JS hoàn chỉnh sử dụng GroupDocs.Conversion Cloud SDK.

Ví dụ mã hoàn chỉnh: Tạo DOCX từ nội dung HTML

Chương trình sau đây kết hợp tất cả các phần lại thành một script duy nhất, có thể chạy được.

// Full working example for HTML to DOCX conversion using GroupDocs.Conversion Cloud SDK for Node.js

const { ConversionApi, Configuration } = require('groupdocs-conversion-cloud');
const fs = require('fs');
const path = require('path');

async function convertHtmlToDocx() {
    // 1. Configure the API client
    const config = new Configuration({
        clientId: 'YOUR_CLIENT_ID',
        clientSecret: 'YOUR_CLIENT_SECRET'
    });
    const conversionApi = new ConversionApi(config);

// 2. Read the HTML file
    const htmlPath = path.resolve(__dirname, 'sample.html');
    const htmlBytes = fs.readFileSync(htmlPath);

// 3. Upload the HTML file
    const uploadResult = await conversionApi.uploadFile({
        file: htmlBytes,
        fileName: 'sample.html'
    });
    const sourceFileId = uploadResult.id;

// 4. Define conversion settings
    const convertSettings = {
        outputFormat: 'DOCX',
        options: {
            embedFonts: true,
            pageSize: 'A4',
            marginTop: 20,
            marginBottom: 20,
            marginLeft: 15,
            marginRight: 15
        }
    };

// 5. Perform the conversion
    const convertResult = await conversionApi.convert({
        fileId: sourceFileId,
        convertSettings: convertSettings
    });
    const docxFileId = convertResult.id;

// 6. Download the DOCX file
    const docxBytes = await conversionApi.downloadFile({ fileId: docxFileId });
    const outputPath = path.resolve(__dirname, 'output.docx');
    fs.writeFileSync(outputPath, docxBytes);
    console.log(`Conversion successful. DOCX saved to ${outputPath}`);
}

// Execute the conversion
convertHtmlToDocx().catch(err => {
    console.error('Conversion failed:', err);
});

Lưu ý: Ví dụ mã này minh họa chức năng cốt lõi. Trước khi sử dụng trong dự án của bạn, hãy chắc chắn cập nhật các đường dẫn tệp (sample.html, output.docx), xác minh rằng tất cả các phụ thuộc cần thiết đã được cài đặt đúng cách, và kiểm tra kỹ lưỡng trong môi trường phát triển của bạn. Nếu bạn gặp bất kỳ vấn đề nào, vui lòng tham khảo tài liệu chính thức hoặc liên hệ với đội hỗ trợ để được trợ giúp.

Thực hiện chuyển đổi qua cURL và REST API

Nếu bạn muốn làm việc trực tiếp với HTTP, các lệnh cURL sau thực hiện cùng một chuyển đổi.

  1. Lấy token truy cập

Thay thế YOUR_CLIENT_IDYOUR_CLIENT_SECRET bằng thông tin xác thực của bạn.

curl -X POST "https://api.groupdocs.cloud/v2.0/oauth2/token" \
     -H "Content-Type: application/x-www-form-urlencoded" \
     -d "grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET"

Phản hồi chứa access_token.

  1. Tải lên tệp HTML
curl -X POST "https://api.groupdocs.cloud/v2.0/storage/files/sample.html" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -F "file=@sample.html"
  1. Bắt đầu chuyển đổi
curl -X POST "https://api.groupdocs.cloud/v2.0/conversion/convert" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{
           "sourceFilePath": "sample.html",
           "outputFilePath": "output.docx",
           "outputFormat": "DOCX",
           "options": {
               "embedFonts": true,
               "pageSize": "A4"
           }
         }'
  1. Tải xuống DOCX đã chuyển đổi
curl -X GET "https://api.groupdocs.cloud/v2.0/storage/files/output.docx" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -o output.docx

Để xem danh sách đầy đủ các tham số, hãy tham khảo tài liệu API chính thức.

Cấu hình các tùy chọn cho việc chuyển đổi nội dung HTML sang DOCX

SDK cung cấp một số thuộc tính cho phép bạn tinh chỉnh đầu ra:

  • embedFonts - Nhúng tất cả các phông chữ được tham chiếu vào DOCX, đảm bảo độ trung thực về hình ảnh.
  • pageSize - Đặt kích thước trang (A4, Letter, v.v.).
  • marginTop / marginBottom / marginLeft / marginRight - Điều chỉnh lề trang tính bằng điểm.

Ví dụ về việc áp dụng các tùy chọn này:

const convertSettings = {
    outputFormat: 'DOCX',
    options: {
        embedFonts: true,
        pageSize: 'Letter',
        marginTop: 30,
        marginBottom: 30,
        marginLeft: 20,
        marginRight: 20
    }
};

Tham khảo lớp ConversionOptions class để biết danh sách đầy đủ.

Các yếu tố cần cân nhắc về hiệu năng khi chuyển đổi nội dung HTML sang DOCX

Khi chuyển đổi các tài liệu HTML lớn hoặc phức tạp, hãy ghi nhớ những mẹo sau:

  1. Tái sử dụng client API - Tạo một thể hiện mới của ConversionApi cho mỗi tệp sẽ gây tốn tài nguyên.
  2. Phát luồng các tệp HTML lớn - Thay vì tải toàn bộ tệp vào bộ nhớ, hãy sử dụng luồng (fs.createReadStream) và phương thức uploadFileStream của SDK.
  3. Giới hạn tài nguyên nhúng - Loại bỏ các hình ảnh hoặc script không cần thiết khỏi HTML trước khi tải lên để giảm thời gian xử lý.
  4. Chuyển đổi hàng loạt - Xử lý các tệp một cách tuần tự trong vòng lặp, nhưng tuân thủ giới hạn tốc độ của API để tránh bị throttling.

Áp dụng những thực hành này giúp duy trì độ trễ thấp và tiêu thụ bộ nhớ vừa phải.

Kết luận

HTML to DOCX conversion in Node.JS becomes straightforward with the GroupDocs.Conversion Cloud SDK for Node.js. By following the steps above, you can integrate reliable DOCX generation from HTML into any server‑side application, customize the output, and optimize performance for large workloads. Remember to acquire a proper license for production use; you can purchase a subscription or obtain a temporary license from the temporary license page. Happy coding!

FAQs

Làm sao để bắt đầu chuyển đổi HTML sang DOCX trong Node.JS?

Sử dụng SDK để tạo một client ConversionApi, tải lên tệp HTML của bạn, thiết lập các tùy chọn chuyển đổi mong muốn và gọi phương thức convert. Quá trình này hoàn toàn bất đồng bộ và trả về định danh tệp DOCX để tải xuống.

Những tùy chọn nào tôi có thể điều chỉnh cho việc tạo DOCX từ HTML?

ConversionOptions cho phép bạn nhúng phông chữ, chọn kích thước trang, đặt lề và kiểm soát việc xử lý hình ảnh. Xem Tham khảo API để biết tất cả các cài đặt khả dụng.

Tôi có thể chuyển đổi HTML chứa CSS bên ngoài hoặc hình ảnh không?

Có. Tải lên bất kỳ tài nguyên nào được tham chiếu (CSS, hình ảnh) lên cùng thư mục lưu trữ trước khi bắt đầu chuyển đổi, và SDK sẽ giải quyết các liên kết trong quá trình xử lý.

Tôi có cần giấy phép cho việc triển khai trong môi trường sản xuất không?

Cần có giấy phép hợp lệ cho môi trường sản xuất. Bạn có thể lấy giấy phép tạm thời để thử nghiệm từ trang giấy phép tạm thời và mua gói đăng ký đầy đủ khi bạn đã sẵn sàng triển khai.

Read More