A comprehensive tool for dynamically generating and rendering business documents like invoices using modern web technologies.
Go to file
2024-12-05 01:33:16 +01:00
.gitea/workflows fix(workflow): Corrected Docker image references and package scope in YAML workflows for compatibility. 2024-12-02 16:13:37 +01:00
.vscode fix(core): update 2023-10-16 18:28:12 +02:00
html fix(elements): Update viewer attributes and fix font integration 2024-12-02 17:05:03 +01:00
test fix(workflow): Corrected Docker image references and package scope in YAML workflows for compatibility. 2024-12-02 16:13:37 +01:00
ts fix(elements): Update viewer attributes and fix font integration 2024-12-02 17:05:03 +01:00
ts_shared update 2024-12-05 01:33:16 +01:00
ts_web update 2024-12-05 01:33:16 +01:00
.gitignore fix(workflow): Corrected Docker image references and package scope in YAML workflows for compatibility. 2024-12-02 16:13:37 +01:00
.npmrc update 2024-12-05 01:33:16 +01:00
changelog.md fix(elements): Update viewer attributes and fix font integration 2024-12-02 17:05:03 +01:00
license fix(core): update 2023-10-16 18:28:12 +02:00
npmextra.json fix(documentation): Updated project description and enhanced documentation in package.json and README 2024-12-02 15:02:14 +01:00
package.json update 2024-12-05 01:33:16 +01:00
pnpm-lock.yaml update 2024-12-05 01:33:16 +01:00
readme.hints.md update documentation 2024-04-20 23:17:35 +02:00
readme.md fix(workflow): Corrected Docker image references and package scope in YAML workflows for compatibility. 2024-12-02 16:13:37 +01:00
tsconfig.json fix(workflow): Corrected Docker image references and package scope in YAML workflows for compatibility. 2024-12-02 16:13:37 +01:00

@design.estate/dees-document

A comprehensive tool for dynamically generating and rendering business documents like invoices using modern web technologies.

Install

To incorporate @design.estate/dees-document into your project, execute the following command in your terminal:

npm install @design.estate/dees-document --save

This command will install the package and add it to your project's dependencies, thus making all the necessary modules available within your node_modules directory.

Usage

The @design.estate/dees-document package serves as a robust framework to facilitate the generation of business documents, such as invoices, contracts, and reports. Leveraging modern web technologies, this package integrates seamlessly with TypeScript and ES modules, offering a type-safe environment conducive to efficient, dynamic document creation.

Below, we provide a detailed guide for utilizing this package, from initializing your environment to generating complete PDF documents.

Setting Up the Environment

Before diving into document creation, ensure your environment is properly configured. Make sure to import necessary dependencies and setup configurations:

import { PdfService, IPdfServiceConstructorOptions } from '@design.estate/dees-document';

async function setupPdfService() {
  const options: IPdfServiceConstructorOptions = {
    // Configure your options here
  };

  const pdfService = await PdfService.createAndStart(options);
  console.log('PDF Service started successfully.');
  return pdfService;
}

In this setup snippet, you set up the PdfService which is the core component for PDF generation. The configuration options should be adjusted to fit your needs, especially considering options such as file paths, languages, and template directories.

Creating a Document Template

To create documents, particularly invoices, you'll first need to define a template. This template describes the structure of your document:

import { ILetter } from '@design.estate/dees-document';

const invoiceTemplate: ILetter = {
  from: {
    name: 'Your Company Name',
    address: {
      streetName: 'Your Street',
      houseNumber: '123',
      city: 'Your City',
      country: 'Your Country',
      postalCode: '12345',
    },
    email: 'your-email@example.com',
    phone: '123-456-7890',
  },
  to: {
    name: 'Recipient Company Name',
    address: {
      streetName: 'Recipient Street',
      houseNumber: '456',
      city: 'Recipient City',
      country: 'Recipient Country',
      postalCode: '67890',
    },
    email: 'recipient-email@example.com',
    phone: '098-765-4321',
  },
  content: {
    invoiceData: {
      items: [
        {
          name: 'Service or Product Name',
          unitQuantity: 2,
          unitNetPrice: 100.0,
          unitType: 'service',
          vatPercentage: 19,
          currency: 'EUR',
        },
      ],
    },
  },
  subject: 'Invoice for Services Rendered',
  date: new Date().getTime(),
  versionInfo: {
    type: 'final',
    version: '1.0.0',
  },
};

The invoiceTemplate object utilizes the ILetter interface which specifies the structure for invoice data, including sender and recipient details, itemization, and pricing.

Generating the Document

Once a template is established, the next step is generating a PDF:

async function generateInvoice(pdfService: PdfService, invoiceData: ILetter) {
  const pdfBuffer = await pdfService.createPdfFromLetterObject(invoiceData);
  console.log('Invoice PDF generated successfully.');

  // Here you could save the PDF to your filesystem, send it via email, etc.
}

In this function, the createPdfFromLetterObject method converts your invoice data into a Buffer containing the PDF. This Buffer can subsequently be saved as a file or sent over HTTP.

Comprehensive Example

Below is an example integrating all previous steps into a single coherent script:

async function main() {
  const pdfService = await setupPdfService();
  const invoiceData: ILetter = {
    // Populate your invoice object
  };
  await generateInvoice(pdfService, invoiceData);
}

main().then(() => console.log('Invoice generation process completed.'));

This script encompasses initializing services and generating a PDF in a streamlined, efficient workflow.

Advanced Features

@design.estate/dees-document provides several advanced functionalities, enabling rich document creation:

  1. Custom Templates & Styling

    • Customize the styling through CSS or using inline styles in TypeScript.
    • Templates can be adjusted to present different document types (e.g., contracts, reports).
  2. Modular Components and Reuse

    • Utilize modular components to create reusable parts across different documents, enhancing maintainability and reducing redundancy.
  3. Interactive Documents

    • Integrate interactivities like forms, buttons, and interactive charts within your documents.
  4. Localization Support

    • Documents can be localized to support multiple languages, enhancing accessibility and usability.
  5. Responsive and Adaptive Designs

    • Create documents that adjust layout dynamically depending on print or digital medium, maintaining consistency across platforms.
  6. Security Features

    • Apply digital signatures and encrypt sensitive documents to ensure secure and authentic document distribution.
  7. Complex Business Logic

    • Implement complex logic for feature-rich documents such as inventory systems, automatic tax calculations, or real-time pricing adjustments.

Utilize Translation for Localization

The package offers a translation mechanism to adapt your documents for international clients:

import { translate } from '@design.estate/dees-document/shared';

const languageCode: 'DE' | 'EN' | 'ES' = 'EN'; // Set required language code
console.log(translate(languageCode, 'invoice', 'Invoice')); // Translated output

Different language settings can be applied, enabling the seamless presentation of document contents tailored to regional and linguistic preferences.

Conclusion

The @design.estate/dees-document package is a versatile and powerful solution for businesses seeking to automate and streamline their document generation processes using modern web technologies. By integrating seamlessly with TypeScript, it offers robust capabilities for creating complex, customizable, and interactive documents that can meet a variety of business needs.

From custom templates to localization and advanced security features, this module provides the flexibility and power to create polished and professional documents efficiently. Whether you're generating invoices, contracts, or detailed reports, @design.estate/dees-document has the tools to support your enterprise workflows with ease and precision.

This repository contains open-source code that is licensed under the MIT License. A copy of the MIT License can be found in the license file within this repository.

Please note: The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.

Trademarks

This project is owned and maintained by Task Venture Capital GmbH. The names and logos associated with Task Venture Capital GmbH and any related products or services are trademarks of Task Venture Capital GmbH and are not included within the scope of the MIT license granted herein. Use of these trademarks must comply with Task Venture Capital GmbH's Trademark Guidelines, and any usage must be approved in writing by Task Venture Capital GmbH.

Company Information

Task Venture Capital GmbH
Registered at District court Bremen HRB 35230 HB, Germany

For any legal inquiries or if you require further information, please contact us via email at hello@task.vc.

By using this repository, you acknowledge that you have read this section, agree to comply with its terms, and understand that the licensing of the code does not imply endorsement by Task Venture Capital GmbH of any derivative works.