Dinamik Word Belgeleri Oluşturmak için JavaScript API

Node.js ve tarayıcı tabanlı uygulamalarla Dinamik Word Belgeleri Oluşturmak için Açık Kaynak JavaScript Kütüphanesi.

Docx-templates nedir?

Docx-Templates, önceden tanımlı şablonlar kullanarak dinamik Microsoft Word (.docx) belgeleri oluşturmayı sağlayan açık kaynaklı bir JavaScript kütüphanesidir. Word belgelerini programlı olarak manuel bir şekilde oluşturmak yerine, geliştiriciler Microsoft Word'te şablonlar tasarlayabilir ve gömülü komutlarla dinamik verileri enjekte edebilir. Bu kütüphane, Node.js ve tarayıcı ortamlarında çalışır, böylece modern web ve sunucu tarafı uygulamaları için son derece esnek bir çözüm sunar. DOCX dosyalarını, iç XML yapısını ayrıştırarak ve şablon komutlarını çalışma zamanında gerçek verilerle değiştirerek işler.

Docx-Templates kütüphanesi, hem Node.js hem de tarayıcı ortamları için tasarlanmış güçlü, açık kaynaklı bir araçtır. Kütüphanenin temel avantajı tasarım ve mantığın ayrılmasıdır. Teknik olmayan kullanıcılar Word'de düzen ve stil tasarlayabilirken, geliştiriciler veriyi enjekte etmeye odaklanır. Döngüler, koşullu biçimlendirme gibi karmaşık mantıkları ve hatta JavaScript parçacıklarının doğrudan belge içinde çalıştırılmasını destekler. Bu, XML veya özel tasarım araçlarıyla uğraşmadan yüksek doğrulukta raporlar üretmesi gereken geliştiriciler için ideal bir çözümdür.

Previous Next

Docx-templates ile Başlarken

Docx-templates kütüphanesini kurmanın önerilen yolu npm aracılığıyla yapılmasıdır. Sorunsuz bir kurulum için lütfen aşağıdaki komutu kullanın.

NPM üzerinden Docx-Templates kurun

$ npm install docx-templates 

Yarn üzerinden Docx-Templates kurun/strong>

$ yarn add docx-templates 

JS API aracılığıyla Şablon Tabanlı Belge Oluşturma

Açık kaynak Docx-Templates kütüphanesi, yazılım geliştiricilerin Word'de belgeler tasarlamasına ve basit komutlarla verileri dinamik olarak enjekte etmesine olanak tanır. Bu yaklaşım, sunumu mantıktan ayırır ve şablonların kodu değiştirmeden kolayca yönetilmesini ve güncellenmesini sağlar. Veri nesnenizden özelliklere doğrudan erişebilir veya hatta basit ifadeler çalıştırabilirsiniz. Örneğin, tam bir isim eklemek için şablonunuz şu şekilde görünür: {firstName} {surname}. Kütüphane kodu değerlendirir ve sorunsuz bir şekilde değiştirir.

JavaScript Uygulamalarında Dinamik Olarak Word Belgeleri Nasıl Oluşturulur?

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);

JavaScript ile Dinamik Görsel Enjeksiyonu

Metnin ötesinde, açık kaynak Docx-Templates kütüphanesi anında görüntüler ekleyebilir. Bu, yerel dosyalar, bir URL'den gelen görüntüler veya hatta programlı olarak oluşturulan QR kodlarını içerir. Görüntünün boyutunu ve konumunu kontrol edebilirsiniz. Bu özellik, kimlik rozetleri, ürün katalogları veya dinamik grafikler ve görsel kanıt gerektiren raporlar oluşturmak için bir dönüm noktasıdır. İşte JavaScript API'si aracılığıyla bir Word belgesine görüntü eklemeyi gösteren basit bir örnek.

JavaScript API'si ile Word Belgelerine Anında Görüntü Nasıl Eklenir?

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()}

Güçlü Döngüler (FOR/END-FOR)

Veri listelerinin işlenmesi, FOR komutu ile sorunsuzdur. Bu özellik, diziler üzerinde yineleme yaparak tablo satırları, listeler veya bir belgenin tüm bölümlerini oluşturmanıza olanak tanır. Docx-Templates kütüphanesi, iç içe döngüler için destek eklemiştir; bu sayede, örneğin bölümlerin ve bunların ilgili çalışanlarının listesi gibi karmaşık hiyerarşik veri yapılarını, orijinal Word stilini koruyarak temsil edebilirsiniz. Aşağıdaki kod örneği, bunun nasıl yapılacağını göstermektedir.

JavaScript Uygulamalarında Gelişmiş Döngü Nasıl Uygulanır?

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}
*/

Özel JavaScript Bağlamı (EXEC)

Docx-Templates kütüphanesinin en gelişmiş özelliklerinden biri, EXEC (veya !) komutunu kullanarak rastgele JavaScript kod parçacıklarını çalıştırabilme yeteneğidir. additionalJsContext sağlayarak, şablona özel yardımcı fonksiyonlar sunabilirsiniz. Bu sayede şablon, ana uygulama mantığınızda her veri parçasını önceden işlemek zorunda kalmadan, hesaplamalar yapabilir, tarihleri biçimlendirebilir veya dizeleri içsel olarak manipüle edebilir.

 Türkçe