findFormXObject method

  1. @override
PdfContentFormXObject? findFormXObject(
  1. String name
)
override

Form XObject named name (with the slash), or null.

Implementation

@override
PdfContentFormXObject? findFormXObject(String name) {
  final xObjects = _subDictionary('/XObject');
  final entry = xObjects?.values[name];
  if (entry == null) return parent?.findFormXObject(name);

  final ref = PdfParserObjects.asRef(entry);
  final object = ref == null ? null : parser.getObject(ref.obj);
  final dictValue = object?.value ?? parser.resolve(entry);
  if (dictValue is! PdfDictToken) return parent?.findFormXObject(name);
  if (PdfParserObjects.asName(dictValue.values['/Subtype']) != '/Form') {
    return null;
  }

  final raw = object?.streamData;
  if (raw == null) return null;
  final content = decodeStreamData(parser, dictValue, raw);
  if (content == null) return null;

  final own = parser.resolve(dictValue.values['/Resources']);
  return PdfContentFormXObject(
    content: content,
    resources: PdfParserContentResources(
        parser, own is PdfDictToken ? own : null,
        parent: this),
    matrix: _numberArray(parser, dictValue.values['/Matrix']),
    objectId: ref?.obj,
  );
}