Web Demos

BARCODE READER SDK DEMO

Explore the flexibe barcode reading settings to optimize for your specific usage scenario.

WEB TWAIN SDK DEMO

Try the most popular web scanner features: scan images, import local images and PDF files, edit, save to local, upload to database, and etc.

BARCODE READER JAVASCRIPT DEMO

Transform any camera-equipped devices into real-time, browser-based barcode and QR code scanners.

MRZ SCANNER WEB DEMO

Detects the machine-readable zone of a passport, scans the text, and parses into human-readable data.

APP STORE DEMOS

BARCODE READER SDK FOR IOS

BARCODE READER SDK FOR ANDROID

VIEW MORE DEMOS >
Dev Center
Table of contents

Thanks for downloading Dynamsoft Barcode Reader Package!

Your download will start shortly. If your download does not begin, click here to retry.

Scan and parse PDF417 on AAMVA documents

The PDF417 barcode on an AAMVA compatible driver’s license contains a lot of information which is encoded following the DL/ID Card Design Standard. In this article, we explore how to read and extract the information.

Read the barcode

The first step is to get the encrypted information as raw string from the barcode. The following code shows how to do this with DBR.

  • Javascript
let scanner = null;
let rawString = null;
Dynamsoft.DBR.BarcodeReader.license = 'DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9';
(async () => {
    document.getElementById("input-to-fill").addEventListener('click', async function () {
        try {
            scanner = scanner || await Dynamsoft.DBR.BarcodeScanner.createInstance();
            // Uses the built-in template "dense" meant for dense barcodes such as the ones found on driver licenses.
            await scanner.updateRuntimeSettings("dense");
            let settings = await scanner.getRuntimeSettings();
            // Sets the barcode type to PDF417.
            settings.barcodeFormatIds = Dynamsoft.DBR.EnumBarcodeFormat.BF_PDF417;
            await scanner.updateRuntimeSettings(settings);
            scanner.onUniqueRead = (txt, result) => {
                rawString = txt;
            };
            await scanner.show();
            // Sets a high resolution so that the dense barcode gets recognized easier
            await scanner.setResolution(1920, 1080);
        } catch (ex) {
            alert(ex.message);
            throw ex;
        }
    });
})();

Now we have the original encoded data (rawString), the next step is to parse it to extract useful information.

Parse the data string

The encoded data is not readable, therefore, we parse it to extract the actual information we need. The following code shows how this is done.

  • Javascript
<script src="https://cdn.jsdelivr.net/npm/dynamsoft-code-parser@1.1.0/dist/dcp.js"></script>
<script>
let parser = null;
Dynamsoft.DCP.CodeParser.license ='DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9';
(async () => {
    try {
        let parser = await Dynamsoft.DCP.CodeParser.createInstance();
        parser.setCodeFormat(Dynamsoft.DCP.EnumCodeFormat.CF_DL_AAMVA);
        // Parses the raw data retrieved from the barcode
        let info = await parser.parseData(rawString);
        // Checks the readable information in the console
        console.log(JSON.stringify(info));
    } catch (ex) {
        alert(ex.message);
        throw ex;
    }
})();
</script>

If you are using the JavaScript edition, also check out:

This page is compatible for:

Version 7.5.0

Is this page helpful?

YesYes NoNo

In this article:

latest version

    • Latest version
    • Version 9.x
      • Version 9.2.0
      • Version 9.0.0
    • Version 8.x
      • Version 8.8.0
      • Version 8.6.0
      • Version 8.4.0
      • Version 8.2.0
      • Version 8.1.2
      • Version 8.1.0
      • Version 8.0.0
    • Version 7.x
      • Version 7.6.0
      • Version 7.5.0
    Change +
    © 2003–2023 Dynamsoft. All rights reserved.
    Privacy Statement / Site Map / Home / Purchase / Support