parseBytes method

Future<PdfDocument> parseBytes(
  1. Uint8List bytes
)

Implementation

Future<PdfDocument> parseBytes(Uint8List bytes) async {
    final content = utf8.decode(bytes, allowMalformed: true);

    // Naive object parser (expand later)
    final objects = <PdfObject>[];
    final pages = <PdfPage>[];

    final regex = RegExp(r'(\d+) (\d+) obj(.*?)endobj', dotAll: true);
    for (final match in regex.allMatches(content)) {
      objects.add(PdfObject(
        number: int.parse(match.group(1)!),
        generation: int.parse(match.group(2)!),
        content: match.group(3)!.trim(),
      ));
    }

    // Find pages
    for (var obj in objects) {
      if (obj.content.contains("/Type /Page")) {
        pages.add(PdfPage(number: obj.number));
      }
    }

    return PdfDocument(objects: objects, pages: pages);
  }