I am searching for a Flutter package which can find the barcode of a .pdf file

Issue

I am trying to build an application on Windows, which i pick (.pdf) files that contain a barcode on them.
I want to find and extract the barcode info and put it on a list.
I need a package that it can make it happen. A package except https://pub.dev/packages/flutter_barcode_sdk because it has an annually cost for its licence.

Solution

I spent some time writing this for you and I made it using two different packages.

This one is able to read barcodes from camera and files
scan: 1.6.0

But I could not make it read PDFs, so I installed another package to render images from PDF files.
native_pdf_renderer: 3.1.0

This package is also required:
path_provider: ^2.0.11

This is the code that worked fine for me:

import 'dart:async';
import 'dart:io';

import 'package:native_pdf_renderer/native_pdf_renderer.dart';
import 'package:path_provider/path_provider.dart';
import 'package:scan/scan.dart';

Future<void> readBarcodeFromPDF(String assetPath) async {
  PdfDocument pdf = await PdfDocument.openAsset(assetPath);
  for (var pageIndex = 0; pageIndex < pdf.pagesCount; pageIndex++) {
    final page = await pdf.getPage(pageIndex);
    final image = await page.render(width: 2048, height: 2048); 
    if (image != null) {
      final byteData = image.bytes;
      final file = File('${(await getTemporaryDirectory()).path}/barcodes');
      await file.writeAsBytes(byteData.buffer.asUint8List(byteData.offsetInBytes, byteData.lengthInBytes));
      String? barcode = await Scan.parse(file.path);
      if (barcode == null) {
        print("barcode not found in page $pageIndex");
      } else {
        print("Barcode Found: $barcode in page $pageIndex");
      }
    }
  }
}

Answered By – Leo Rodrigo

Answer Checked By – Senaida (FlutterFixes Volunteer)

Leave a Reply

Your email address will not be published. Required fields are marked *