encode method

  1. @override
BitMatrix encode(
  1. String contents,
  2. BarcodeFormat format,
  3. int width,
  4. int height, [
  5. Map<EncodeHintType, Object>? hints,
])
override

@param contents The contents to encode in the barcode @param format The barcode format to generate @param width The preferred width in pixels @param height The preferred height in pixels @param hints Additional parameters to supply to the encoder @return BitMatrix representing encoded barcode image @throws WriterException if contents cannot be encoded legally in a format

Implementation

@override
BitMatrix encode(
  String contents,
  BarcodeFormat format,
  int width,
  int height, [
  Map<EncodeHintType, Object>? hints,
]) {
  if (format != BarcodeFormat.PDF_417) {
    throw ArgumentError('Can only encode PDF_417, but got $format');
  }

  final encoder = PDF417();
  int margin = _WHITE_SPACE;
  int errorCorrectionLevel = _DEFAULT_ERROR_CORRECTION_LEVEL;
  bool autoECI = false;

  if (hints != null) {
    if (hints.containsKey(EncodeHintType.PDF417_COMPACT)) {
      encoder.setCompact(hints[EncodeHintType.PDF417_COMPACT] as bool);
    }
    if (hints.containsKey(EncodeHintType.PDF417_COMPACTION)) {
      encoder.setCompaction(
        hints[EncodeHintType.PDF417_COMPACTION] as Compaction,
      );
    }
    if (hints.containsKey(EncodeHintType.PDF417_DIMENSIONS)) {
      final dimensions =
          hints[EncodeHintType.PDF417_DIMENSIONS] as Dimensions;
      encoder.setDimensions(
        dimensions.maxCols,
        dimensions.minCols,
        dimensions.maxRows,
        dimensions.minRows,
      );
    }
    if (hints.containsKey(EncodeHintType.MARGIN)) {
      margin = int.parse(hints[EncodeHintType.MARGIN].toString());
    }
    if (hints.containsKey(EncodeHintType.ERROR_CORRECTION)) {
      errorCorrectionLevel =
          int.parse(hints[EncodeHintType.ERROR_CORRECTION].toString());
    }
    if (hints.containsKey(EncodeHintType.CHARACTER_SET)) {
      final encoding = CharacterSetECI.getCharacterSetECIByName(
        hints[EncodeHintType.CHARACTER_SET].toString(),
      )?.charset;
      if (encoding != null) encoder.setEncoding(encoding);
    }
    autoECI = (hints[EncodeHintType.PDF417_AUTO_ECI] as bool?) ?? false;
  }

  return _bitMatrixFromEncoder(
    encoder,
    contents,
    errorCorrectionLevel,
    width,
    height,
    margin,
    autoECI,
  );
}