API JavaScript do generowania dynamicznych dokumentów Word
Otwarta biblioteka JavaScript do tworzenia dynamicznych dokumentów Word przy użyciu Node.js i aplikacji przeglądarkowych.
Czym jest Docx-templates?
Docx-Templates to otwarto‑źródłowa biblioteka JavaScript, która umożliwia programistom tworzenie dynamicznych dokumentów Microsoft Word (.docx) przy użyciu wcześniej zdefiniowanych szablonów. Zamiast ręcznie budować dokumenty Word programowo, deweloperzy mogą projektować szablony w Microsoft Word i wstawiać dynamiczne dane za pomocą osadzonych poleceń. Biblioteka działa zarówno w środowiskach Node.js, jak i przeglądarki, co czyni ją bardzo wszechstronną dla nowoczesnych aplikacji internetowych i serwerowych. Przetwarza pliki DOCX, analizując ich wewnętrzną strukturę XML i zastępując polecenia szablonu rzeczywistymi danymi w czasie wykonywania.
Biblioteka Docx-Templates to potężne, otwarte narzędzie przeznaczone zarówno dla środowisk Node.js, jak i przeglądarki. Główną zaletą biblioteki jest rozdzielenie projektu i logiki. Użytkownicy nietechniczni mogą projektować układ i stylizację w Wordzie, podczas gdy programiści koncentrują się na wprowadzaniu danych. Obsługuje ona złożoną logikę, taką jak pętle, formatowanie warunkowe, a nawet wykonywanie fragmentów JavaScript bezpośrednio w dokumencie. Dzięki temu jest idealnym rozwiązaniem dla programistów, którzy muszą tworzyć raporty o wysokiej wierności bez walki z XML‑em lub własnościowymi narzędziami projektowymi.
Rozpoczęcie pracy z Docx-templates
Zalecanym sposobem instalacji biblioteki Docx-templates jest npm. Proszę użyć następującego polecenia, aby zapewnić płynną instalację
Zainstaluj Docx-Templates za pomocą NPM
$ npm install docx-templates Zainstaluj Docx-Templates za pomocą Yarn/strong>
$ yarn add docx-templates Generowanie dokumentów na podstawie szablonów za pomocą API JS
Open source biblioteka Docx-Templates pozwala programistom projektować dokumenty w Wordzie i dynamicznie wstawiać dane przy użyciu prostych poleceń. Takie podejście oddziela warstwę prezentacji od logiki, dzięki czemu szablony są łatwe w zarządzaniu i aktualizacji bez zmiany kodu. Możesz bezpośrednio odwoływać się do właściwości w obiekcie danych lub nawet wykonywać proste wyrażenia. Na przykład, aby wstawić pełne imię i nazwisko, twój szablon będzie wyglądał tak: {firstName} {surname}. Biblioteka ocenia kod i zastępuje go płynnie.
Jak dynamicznie tworzyć dokumenty Word w aplikacjach JavaScript?
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);
Dynamiczne wstawianie obrazów za pomocą JavaScript
Poza tekstem, otwarto‑źródłowa biblioteka Docx-Templates może wstawiać obrazy w locie. Obejmuje to pliki lokalne, obrazy z adresu URL lub nawet programowo generowane kody QR. Możesz kontrolować rozmiar obrazu i jego położenie. Ta funkcja jest przełomowa przy tworzeniu identyfikatorów, katalogów produktów lub raportów, które wymagają dynamicznych wykresów i wizualnych dowodów. Oto prosty przykład, który pokazuje, jak wstawić obraz do dokumentu Word przy użyciu API JavaScript.
Jak wstawić obraz w locie w dokumentach Word za pomocą API JavaScript?
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()}
Potężne pętle (FOR/END-FOR)
Obsługa list danych jest płynna dzięki poleceniu FOR. Ta funkcja pozwala iterować po tablicach, aby generować wiersze tabel, listy lub nawet całe sekcje dokumentu. Biblioteka Docx-Templates zawiera wsparcie dla zagnieżdżonych pętli, umożliwiając reprezentację złożonych struktur hierarchicznych, takich jak lista działów wraz z ich pracownikami, przy zachowaniu oryginalnego stylu Word. Poniższy przykład kodu pokazuje, jak to osiągnąć.
Jak zastosować zaawansowaną pętlę w aplikacjach JavaScript?
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}
*/
Niestandardowy kontekst JavaScript (EXEC)
Jedną z najbardziej zaawansowanych funkcji biblioteki Docx-Templates jest możliwość uruchamiania dowolnych fragmentów JavaScript przy użyciu polecenia EXEC (lub !). Dostarczając additionalJsContext, możesz udostępnić szablonowi własne funkcje pomocnicze. Pozwala to szablonowi wykonywać obliczenia, formatować daty lub manipulować łańcuchami znaków wewnętrznie, bez konieczności wstępnego przetwarzania każdego elementu danych w głównej logice aplikacji.