encode method
BitMatrix
encode(
- String contents,
- BarcodeFormat format,
- int width,
- int height, [
- 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,
);
}