complex-barcode/complex-barcode-generator.js

const fs = require("fs");
const _MwWrapper = require("../_mwbridge/_mw-wrapper.js");
const { MwComplexBarcodeGenerator } = require("../_mwbridge/_mw-bridge.js");
const BaseGenerationParameters = require("../generation/base-generation-parameters.js");

/**
 *  ComplexBarcodeGenerator for backend complex barcode (e.g. SwissQR) images generation.
 *  @example
 *  This sample shows how to create and save a SwissQR image.
 *    let swissQRCodetext = new SwissQRCodetext(null);
 *    swissQRCodetext.getBill().setAccount("Account");
 *    swissQRCodetext.getBill().setBillInformation("BillInformation");
 *    swissQRCodetext.getBill().setBillInformation("BillInformation");
 *    swissQRCodetext.getBill().setAmount(1024);
 *    swissQRCodetext.getBill().getCreditor().setName("Creditor.Name");
 *    swissQRCodetext.getBill().getCreditor().setAddressLine1("Creditor.AddressLine1");
 *    swissQRCodetext.getBill().getCreditor().setAddressLine2("Creditor.AddressLine2");
 *    swissQRCodetext.getBill().getCreditor().setCountryCode("Nl");
 *    swissQRCodetext.getBill().setUnstructuredMessage("UnstructuredMessage");
 *    swissQRCodetext.getBill().setReference("Reference");
 *    swissQRCodetext.getBill().setAlternativeSchemes([new AlternativeScheme("AlternativeSchemeInstruction1"),new AlternativeScheme("AlternativeSchemeInstruction2")]);
 *    swissQRCodetext.getBill().setDebtor(new Address(null));
 *    swissQRCodetext.getBill().getDebtor().setName("Debtor.Name");
 *    swissQRCodetext.getBill().getDebtor().setAddressLine1("Debtor.AddressLine1");
 *    swissQRCodetext.getBill().getDebtor().setAddressLine2("Debtor.AddressLine2");
 *    swissQRCodetext.getBill().getDebtor().setCountryCode("Lux");
 *    let cg = new ComplexBarcodeGenerator(swissQRCodetext);
 *    let res = cg.generateBarCodeImage(BarcodeImageFormat.PNG);
 */
class ComplexBarcodeGenerator extends _MwWrapper {
    parameters;

    /**
     * Creates an instance of ComplexBarcodeGenerator.
     * @param complexCodetext Complex codetext
     */
    constructor(complexCodetext)
    {
        super(new MwComplexBarcodeGenerator(complexCodetext.getJavaClass()));
        this._initializeWrapperMembers();
    }

    _initializeWrapperMembers() {
        this.parameters = new BaseGenerationParameters(this.getJavaClass().getParametersSync());
    }

    /**
     * Generation parameters.
     */
    getParameters() {
        return this.parameters;
    }

    /**
     * Generates complex barcode image under current settings.
     * @return  Base64 presentation of image.
     */
    generateBarCodeImage(format) {
        let base64Image = this.getJavaClass().generateBarCodeImageSync(format);
        return base64Image;
    }

    /**
     * <p>
     * Generates and saves complex barcode image under current settings.
     * </p>
     * @param filePath Path to save to.
     * @param format BarCodeImageFormat(PNG, BMP, JPEG, GIF)
     */
    save(filePath, format) {
        let image64 = this.generateBarCodeImage(format);
        let buff = Buffer.from(image64, 'base64');
        fs.writeFileSync(filePath, buff);
    }
}

module.exports = ComplexBarcodeGenerator