Files
evidencija-rezija/web-app/app/lib/pdf/renderBarcode.ts
Knee Cola 57dcebd640 refactor: convert repository to monorepo with npm workspaces
Restructured the repository into a monorepo to better organize application code
and maintenance scripts.

## Workspace Structure
- web-app: Next.js application (all app code moved from root)
- housekeeping: Database backup and maintenance scripts

## Key Changes
- Moved all application code to web-app/ using git mv
- Moved database scripts to housekeeping/ workspace
- Updated Dockerfile for monorepo build process
- Updated docker-compose files (volume paths: ./web-app/etc/hosts/)
- Updated .gitignore for workspace-level node_modules
- Updated documentation (README.md, CLAUDE.md, CHANGELOG.md)

## Migration Impact
- Root package.json now manages workspaces
- Build commands delegate to web-app workspace
- All file history preserved via git mv
- Docker build process updated for workspace structure

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-25 12:13:04 +01:00

51 lines
1.9 KiB
TypeScript

import { BarcodeArray } from './pdf417';
/**
* Renders a PDF417 barcode matrix to a canvas and returns it as a data URL.
*
* This function creates an HTML canvas element, draws the barcode by iterating through
* the barcode matrix, and converts the canvas to a base64-encoded PNG data URL that
* can be used as an image source.
*
* @param barcodeMatrix - The barcode array generated by the PDF417 encoder containing
* the barcode matrix data with dimensions and binary code values
* @param blockWidth - The width in pixels of each individual barcode module (bar/space unit)
* @param blockHeight - The height in pixels of each individual barcode module (bar/space unit)
*
* @returns A data URL string (base64-encoded PNG) representing the rendered barcode image,
* suitable for use in an HTML img src attribute
*
* @example
* ```typescript
* const pdf417 = createPDF417();
* pdf417.init("Hello World", 2, 2);
* const barcodeArray = pdf417.getBarcodeArray();
* const dataUrl = renderBarcode(barcodeArray, 2, 4);
* // dataUrl can now be used: <img src={dataUrl} />
* ```
*/
export function renderBarcode(barcodeMatrix: BarcodeArray, blockWidth: number, blockHeight: number) {
const canvas = document.createElement('canvas');
canvas.width = barcodeMatrix.num_cols * blockWidth;
canvas.height = barcodeMatrix.num_rows * blockHeight;
const ctx = canvas.getContext('2d') as CanvasRenderingContext2D;
let positionY = 0;
for (let row = 0; row < barcodeMatrix.num_rows; row += 1) {
let positionX = 0;
for (let col = 0; col < barcodeMatrix.num_cols; col += 1) {
if (barcodeMatrix.bcode[row][col] === 1) {
ctx.fillStyle = '#000';
} else {
ctx.fillStyle = '#FFF';
}
ctx.fillRect(positionX, positionY, blockWidth, blockHeight);
positionX += blockWidth;
}
positionY += blockHeight;
}
return canvas.toDataURL();
}