parseFile method

Future<PdfDocument> parseFile(
  1. String path
)

Implementation

Future<PdfDocument> parseFile(String path) async {
  final bytes = await File(path).readAsBytes();
  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);
}