1. Produkter
  2.   Tekstbehandling
  3.   JavaScript
  4.   Docx-templates
 
  

JavaScript API for å generere dynamiske Word-dokumenter

Åpen kildekode JavaScript-bibliotek for å lage dynamiske Word-dokumenter med Node.js og nettleserbaserte applikasjoner.

Hva er Docx-templates?

Docx-Templates er et åpen kildekode JavaScript-bibliotek som gjør det mulig for programvareutviklere å generere dynamiske Microsoft Word (.docx)-dokumenter ved hjelp av forhåndsdefinerte maler. I stedet for å manuelt bygge Word-dokumenter programmatisk, kan utviklere designe maler i Microsoft Word og injisere dynamiske data ved hjelp av innebygde kommandoer. Dette biblioteket fungerer både i Node.js- og nettlesermiljøer, noe som gjør det svært allsidig for moderne web- og server‑side‑applikasjoner. Det behandler DOCX‑filer ved å parse deres interne XML‑struktur og erstatte mal‑kommandoer med faktiske data ved kjøretid.

Docx-Templates-biblioteket er et kraftig, åpen kildekode‑verktøy designet for både Node.js- og nettlesermiljøer. Den primære fordelen med biblioteket er separasjonen av design og logikk. Ikke‑tekniske brukere kan designe layout og stil i Word, mens utviklere fokuserer på å injisere dataene. Det støtter kompleks logikk som løkker, betinget formatering, og til og med utførelse av JavaScript‑snutter direkte i dokumentet. Dette gjør det til en ideell løsning for utviklere som trenger å lage høy‑fidelitetsrapporter uten å kjempe med XML eller proprietære designverktøy.

Previous Next

Kom i gang med Docx-templates

Den anbefalte måten å installere Docx-templates-biblioteket på er via npm. Vennligst bruk følgende kommando for en smidig installasjon

Installer Docx-Templates via NPM

$ npm install docx-templates 

Installer Docx-Templates via Yarn/strong>

$ yarn add docx-templates 

Maler-basert dokumentgenerering via JS API

Det åpne kildekodebiblioteket Docx-Templates gjør det mulig for programvareutviklere å designe dokumenter i Word og injisere data dynamisk ved hjelp av enkle kommandoer. Denne tilnærmingen skiller presentasjon fra logikk, og gjør maler enkle å administrere og oppdatere uten å endre kode. Du kan direkte få tilgang til egenskaper fra dataobjektet ditt eller til og med kjøre enkle uttrykk. For eksempel, for å sette inn et fullt navn, vil malen din se slik ut: {firstName} {surname}. Biblioteket evaluerer koden og erstatter den sømløst.

Hvordan lage dynamiske Word-dokumenter i JavaScript-apper?

import createReport from 'docx-templates';
import fs from 'fs';

const template = fs.readFileSync('template.docx');

const report = await createReport({
  template,
  data: { name: 'John', surname: 'Doe' },
});

fs.writeFileSync('output.docx', report);

Dynamisk bildeinjeksjon via JavaScript

Utover tekst kan det åpne kildekodebiblioteket Docx-Templates injisere bilder umiddelbart. Dette inkluderer lokale filer, bilder fra en URL, eller til og med programmatisk genererte QR-koder. Du kan kontrollere bildestørrelsen og plasseringen. Denne funksjonen er en spillveksler for å lage identifikasjonskort, produktkataloger eller rapporter som krever dynamiske diagrammer og visuell dokumentasjon. Her er et enkelt eksempel som demonstrerer hvordan du setter inn et bilde i Word-dokumenter via JavaScript API.

Hvordan sette inn bilde dynamisk i Word-dokumenter via JavaScript API?

const buffer = await createReport({
  template,
  data: {
    userAvatar: async () => {
      const resp = await fetch('https://example.com/photo.png');
      return { width: 3, height: 3, data: await resp.arrayBuffer(), extension: '.png' };
    }
  },
});
// In Word: {IMAGE userAvatar()}

Kraftige løkker (FOR/END-FOR)

Å håndtere lister med data er sømløst med FOR-kommandoen. Denne funksjonen lar deg iterere over arrays for å generere tabellrader, lister eller til og med hele seksjoner av et dokument. Docx-Templates-biblioteket har inkludert støtte for nestede løkker, som gjør at du kan representere komplekse hierarkiske datastrukturer, som en liste over avdelinger med deres respektive ansatte, samtidig som du beholder den originale Word-stilen. Følgende kodeeksempel viser hvordan du oppnår dette.

Hvordan bruke avanserte løkker i JavaScript-apper?

const buffer = await createReport({
  template,
  data: {
    projects: [
      { name: 'SEO Optimization', status: 'Completed' },
      { name: 'API Integration', status: 'In Progress' }
    ]
  },
});
/* In Word:
{FOR project IN projects}
Project: {project.name} - Status: {project.status}
{END-FOR}
*/

Egendefinert JavaScript-kontekst (EXEC)

En av de mest avanserte funksjonene i Docx-Templates-biblioteket er muligheten til å kjøre vilkårlige JavaScript‑snutter ved hjelp av EXEC (eller !)‑kommandoen. Ved å tilby en additionalJsContext kan du eksponere tilpassede hjelpefunksjoner til malen. Dette gjør at malen kan utføre beregninger, formatere datoer eller manipulere strenger internt uten å måtte forhåndsbehandle hver datapost i hovedapplikasjonslogikken.

 Norsk