Docxtemplater

 
 

Thư viện Node.js miễn phí để Tạo & Quản lý Word DOCX từ mẫu

Một thư viện Node.js nguồn mở hàng đầu cho phép Tạo, Chỉnh sửa và Thao tác tài liệu Word DOCX, XLSX một cách động bằng cách sử dụng phương pháp dựa trên mẫu đơn giản qua API JavaScript.

Docxtemplater là gì?

Trong thế giới kỹ thuật số nhanh chóng ngày nay, hiệu quả là yếu tố tối quan trọng, đặc biệt trong việc quản lý tài liệu. Dù người dùng cần soạn thảo hợp đồng, tạo báo cáo, hay soạn thư cá nhân, việc có một công cụ đáng tin cậy để tự động tạo tài liệu có thể tiết kiệm thời gian và nguồn lực đáng giá. Đó là Docxtemplater, một thư viện mạnh mẽ giúp đơn giản hoá quy trình tạo tài liệu Word từ mẫu. Thư viện cho phép tạo tài liệu dựa trên mẫu, trong đó các placeholder trong mẫu tài liệu Word được thay thế bằng dữ liệu thực tế để tạo tài liệu đầu ra cuối cùng.

Về bản chất, Docxtemplater là một thư viện JavaScript nguồn mở mạnh mẽ cho phép các nhà phát triển phần mềm tạo và quản lý tài liệu Word, Excel và PowerPoint động bằng cách ghép dữ liệu với mẫu đã định trước. Nhờ sử dụng định dạng OpenXML, thư viện cung cấp khả năng kiểm soát chi tiết cấu trúc và nội dung của tài liệu người dùng, cho phép chèn các placeholder sẽ được thay thế bằng dữ liệu thực tế trong quá trình chạy.

Docxtemplater là một thư viện đa năng giúp các nhà phát triển phần mềm tự động hoá việc tạo tài liệu một cách dễ dàng. Bằng cách tận dụng sức mạnh của mẫu và việc ghép dữ liệu, bạn có thể tối ưu hoá quy trình công việc với tài liệu và tăng năng suất đáng kể. Khi sử dụng thư viện một cách đúng đắn, các nhà phát triển có thể dễ dàng tạo ra các tài liệu động phù hợp với nhu cầu cụ thể. Dù bạn đang tự động hoá các nhiệm vụ tạo tài liệu hay cá nhân hoá báo cáo, Docxtemplater là công cụ quý giá trong bộ công cụ của bạn.

Previous Next

Cách cài đặt Docxtemplater?

Để cài đặt Docxtemplater, bạn có thể sử dụng npm, trình quản lý gói cho JavaScript. Vui lòng sử dụng các lệnh sau để cài đặt thành công.

Cài đặt Docxtemplater qua npm

 npm install --save docxtemplater pizzip

Tạo tài liệu Word qua mẫu trong Node.js

Thư viện Docxtemplater nguồn mở giúp các nhà phát triển phần mềm dễ dàng tạo tài liệu Microsoft Word DOCX bằng cách sử dụng mẫu. Các nhà phát triển có thể chèn dữ liệu động vào mẫu bằng cách truyền một đối tượng chứa các cặp khóa-giá trị để thay thế các placeholder bằng dữ liệu thực tế, tạo ra tài liệu đầu ra cuối cùng. Ví dụ dưới đây minh họa cách các nhà phát triển có thể tải một mẫu hiện có và tạo tài liệu Word từ nó trong môi trường Node.js.

Cách tạo tài liệu Word từ mẫu trong Node.js?

const fs = require('fs');
const Docxtemplater = require('docxtemplater');

// Load the template
const content = fs.readFileSync('template.docx', 'binary');
const doc = new Docxtemplater(content);

// Set data to fill placeholders
const data = {
  firstName: 'John',
  lastName: 'Doe'
};

// Replace placeholders with actual data
doc.setData(data);

// Render the document
doc.render();

// Save the generated document
const output = fs.writeFileSync('output.docx', doc.getZip().generate({type: 'nodebuffer'}));

console.log('Document generated successfully!');

Thêm hàm tùy chỉnh & bộ lọc trong ứng dụng Node.js

Các Hàm Tùy chỉnh và Bộ lọc trong thư viện Docxtemplater cung cấp khả năng nâng cao để thao tác dữ liệu và thực hiện các thao tác cụ thể trong mẫu. Chúng cho phép người dùng mở rộng chức năng của thư viện vượt ra ngoài việc thay thế placeholder cơ bản, cho phép tạo nội dung động và xử lý dữ liệu phức tạp. Bạn có thể định nghĩa các hàm tùy chỉnh và bộ lọc để thao tác dữ liệu hoặc thực hiện các thao tác nhất định trong mẫu của mình. Dưới đây là một ví dụ cho thấy các nhà phát triển có thể triển khai một hàm tùy chỉnh để tính tổng giá của các mục trong giỏ hàng và một bộ lọc để định dạng giá tiền tệ.

Cách tính giá các mặt hàng trong giỏ hàng bằng hàm tùy chỉnh & sử dụng bộ lọc để định dạng giá tiền tệ?

const fs = require('fs');
const Docxtemplater = require('docxtemplater');

// Define custom function to calculate total price
function calculateTotal(items) {
  return items.reduce((total, item) => total + item.price * item.quantity, 0);
}

// Define custom filter to format currency
function formatCurrency(value) {
  return '$' + value.toFixed(2); // Format as dollars with 2 decimal places
}

// Load the template
const content = fs.readFileSync('template.docx', 'binary');
const doc = new Docxtemplater(content, {
  parser: {
    // Define custom tag for invoking functions
    getFunction: function(tag) {
      if (tag === 'calculateTotal') {
        return calculateTotal;
      }
    },
    // Define custom tag for applying filters
    getFilter: function(tag) {
      if (tag === 'currency') {
        return formatCurrency;
      }
    }
  }
});

// Set data with shopping cart items
const data = {
  items: [
    { name: 'Product 1', price: 10, quantity: 2 },
    { name: 'Product 2', price: 20, quantity: 1 },
    { name: 'Product 3', price: 15, quantity: 3 }
  ]
};

// Replace placeholders with actual data
doc.setData(data);

// Render the document
doc.render();

// Save the generated document
const output = fs.writeFileSync('output.docx', doc.getZip().generate({ type: 'nodebuffer' }));

console.log('Document generated successfully!');

Hỗ trợ định dạng phong phú

Docxtemplater nguồn mở đơn giản hoá quá trình tạo và quản lý tài liệu Word bằng cách cung cấp một phương pháp dựa trên mẫu dễ hiểu. Hỗ trợ định dạng phong phú trong tài liệu Word đề cập đến khả năng áp dụng các thuộc tính kiểu dáng khác nhau như kiểu phông chữ, màu sắc, kích thước, căn chỉnh và nhiều hơn nữa cho các thành phần khác nhau trong tài liệu Word. Điều này bao gồm định dạng văn bản, bảng, hình ảnh, đoạn văn, định dạng phần, danh sách, dấu đầu dòng và nội dung khác để cải thiện khả năng đọc và thẩm mỹ. Dưới đây là một ví dụ đơn giản cho thấy cách áp dụng Định dạng phong phú cho một phần văn bản trong tài liệu.

Cách áp dụng định dạng phong phú cho văn bản bằng Docxtemplater trong ứng dụng Node.js?

// Render the document with custom parser options for rich formatting
doc.render({
  parser: {
    // Custom tag for interpreting HTML-like tags for rich formatting
    tagToken: function(tag) {
      return {
        tagName: tag.substring(1),
        mode: 'open'
      };
    },
    // Apply rich formatting based on tag names
    commands: {
      b: function(scope, context, tag) {
        return {
          type: 'applyRichText',
          value: { b: true }
        };
      },
      i: function(scope, context, tag) {
        return {
          type: 'applyRichText',
          value: { i: true }
        };
      },
      u: function(scope, context, tag) {
        return {
          type: 'applyRichText',
          value: { u: true }
        };
      },
      strike: function(scope, context, tag) {
        return {
          type: 'applyRichText',
          value: { strike: true }
        };
      }
    }
  }
});

// Save the generated document
const output = fs.writeFileSync('output.docx', doc.getZip().generate({ type: 'nodebuffer' }));

console.log('Document generated successfully!');

 Tiếng Việt