label-generator-backend
v1.1.0
Published
Label Generator Backend Service and Library for generating PDF labels from templates
Readme
Label Generator Library
Biblioteka za generisanje PDF labela iz template konfiguracija i podataka. Podržava tekst, barcode, QR kodove, slike i druge elemente sa varijabilnim podacima.
⚠️ Važno: Backend Only
Ova biblioteka može se koristiti SAMO na backendu (Node.js), ne u browseru!
Razlog: Biblioteka koristi Puppeteer za generisanje PDF-a, koji zahteva Node.js okruženje i ne može raditi u browseru.
Kako koristiti na frontendu?
- Opcija 1: Kreiraj backend API endpoint koji koristi biblioteku
- Opcija 2: Koristi serverless funkciju (AWS Lambda, Vercel Functions, itd.)
Vidi FRONTEND_USAGE.md za detalje.
Instalacija
npm install label-generator-backendBrzi start
import { generatePdf } from 'label-generator-backend/lib'
import { writeFile } from 'fs/promises'
// Template konfiguracija
const templateConfig = {
canvas: {
width: 100, // mm
height: 50, // mm
unit: 'mm',
dpi: 300
},
print: {
format: 'sheet',
document: {
paperSize: 'A4',
gridRows: 2,
gridColumns: 2,
gap: 5
}
},
nodes: [
{
id: 'text1',
type: 'text',
position: { x: 10, y: 10 },
size: { width: 80, height: 20 },
props: {
content: '{{productName}}',
fontSize: 12,
color: '#000000',
align: 'center'
}
},
{
id: 'barcode1',
type: 'barcode',
position: { x: 10, y: 30 },
size: { width: 80, height: 15 },
props: {
format: 'code128',
value: '{{barcode}}',
displayValue: true
}
}
]
}
// Podaci za labele (jedan objekat po labeli)
const data = [
{ productName: 'Proizvod 1', barcode: '1234567890123' },
{ productName: 'Proizvod 2', barcode: '1234567890124' },
{ productName: 'Proizvod 3', barcode: '1234567890125' },
{ productName: 'Proizvod 4', barcode: '1234567890126' }
]
// Generiši PDF
const result = await generatePdf(templateConfig, data)
if (result.success && result.pdf) {
await writeFile('labels.pdf', result.pdf)
console.log('PDF uspešno generisan!')
} else {
console.error('Greška:', result.error)
}API
generatePdf(templateConfig, data, options?)
Generiše PDF iz template konfiguracije i podataka.
Parametri
templateConfig (
TemplateConfig): Konfiguracija template-acanvas: Dimenzije i postavke canvas-a (labela)print: Postavke štampe (format, paper size, grid, itd.)nodes: Niz elemenata labela (text, barcode, qr, image, rectangle, line, addressBlock)
data (
DataRow[]): Niz objekata sa podacima (jedan objekat po labeli)- Svaki objekat može sadržati bilo koje polje koje se koristi u template-u sa
{{variableName}}sintaksom
- Svaki objekat može sadržati bilo koje polje koje se koristi u template-u sa
options (
ExportOptions?): Opcione postavke eksportapage: Dimenzije stranice (overriduje template postavke)grid: Grid postavke (overriduje template postavke)dpi: Rezolucija (overriduje template postavke)labelSize: Dimenzije labela (overriduje template postavke)
Povratna vrednost
interface GeneratePdfResult {
success: boolean
pdf?: Buffer // PDF buffer (ako je success === true)
error?: string // Poruka greške (ako je success === false)
status: 'success' | 'error'
}Tipovi elemenata
Biblioteka podržava sledeće tipove elemenata:
- text - Tekst sa varijablama, wrapping, alignment
- barcode - Code128, Code39, EAN13, QR, DataMatrix, itd.
- qr - QR kodovi sa error correction
- image - Slike (base64 data URLs)
- rectangle - Pravougaonici sa border radius, stroke, fill
- line - Linije sa različitim stilovima
- addressBlock - Blokovi adresa (name, street, zip, city, country)
Vidi LIBRARY_README.md za detaljnu dokumentaciju svih tipova.
Varijable
Template podržava varijable u formatu {{variableName}}. Sve varijable se zamenjuju sa vrednostima iz data objekta.
Primer:
- Template:
"Proizvod: {{productName}}" - Data:
{ productName: 'Laptop' } - Rezultat:
"Proizvod: Laptop"
Format štampe
Single format
Jedna labela po stranici. Dimenzije stranice su jednake dimenzijama labela.
Sheet format
Više labela po stranici u grid formatu. Podržava različite veličine papira:
- A4, A5, A6
- Letter
- Receipt-58mm, Receipt-80mm
- Roll-* (custom roll dimenzije)
- Custom (custom dimenzije)
Zahtevi
- Node.js >= 22.16
- npm ili yarn
Zavisnosti
Biblioteka koristi sledeće npm pakete:
pdf-lib: Za manipulaciju PDF-ompuppeteer: Za renderovanje HTML-a u PDFbwip-js: Za generisanje barcode-ovaqrcode: Za generisanje QR kodova
Korišćenje iz drugih jezika
PHP
Vidi PHP_USAGE.md za detalje.
$generator = new LabelGenerator('http://localhost:3001');
$result = $generator->generatePdf($templateConfig, $data);Python, Java, itd.
Kreiraj REST API endpoint koji koristi biblioteku i pozovi ga iz bilo kog jezika.
Vidi api-server-example.js za primer API servera.
Ograničenja
- Maksimalno 500 labela se obrađuje u jednom chunk-u (automatski se deli na više chunk-ova za veće količine)
- Sve slike moraju biti u base64 formatu (data URLs)
- Template mora biti validan JSON objekat
- Biblioteka radi samo u Node.js okruženju (ne u browseru)
Dokumentacija
- LIBRARY_README.md - Kompletna dokumentacija biblioteke
- FRONTEND_USAGE.md - Kako koristiti na frontendu
- PHP_USAGE.md - Kako koristiti iz PHP-a
- PLAIN_JS_USAGE.md - Korišćenje bez npm-a
Primeri
Vidi api-server-example.js i php-example.php za kompletan primer korišćenja.
Licenca
[Unesite licencu ovde]
Podrška
Za probleme i pitanja, otvorite issue na GitHub-u ili kontaktirajte autora.
