Search code examples
windowsflutterdartbarcodeflutter-desktop

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


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");
          }
        }
      }
    }