diff --git a/.github/workflows/called-workflow-build-sync-production.yml b/.github/workflows/called-workflow-build-sync-production.yml new file mode 100644 index 0000000..696c377 --- /dev/null +++ b/.github/workflows/called-workflow-build-sync-production.yml @@ -0,0 +1,61 @@ +name: Build-Sync-Main + +# the workflow will be called by others +on: + workflow_call: + inputs: + doc-repo: + required: true + type: string + doc-url: + required: true + type: string + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + + Build-And-Sync-To-Production: + # The type of runner that the job will run on + runs-on: [self-hosted, doc-build] + env: + ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + # Runs a set of commands using the runners shell + - name: Build the full site - main + run: | + cd ${{ runner.temp }} + mkdir -p DocHome + git clone --depth 1 https://github.com/dynamsoft-docs/${{ inputs.doc-repo }}.git ${{ inputs.doc-repo }} + git clone --depth 1 https://github.com/dynamsoft-docs/Docs-Template-Repo.git Docs-Template-Repo + cp -rfp ./${{ inputs.doc-repo }}/* ./DocHome/ + cp -rfp ./Docs-Template-Repo/* ./DocHome/ + cd DocHome && bundle install && bundle exec jekyll build + # cd DocHome && bundle exec jekyll build + + - name: Sync files + uses: SamKirkland/FTP-Deploy-Action@4.3.0 + with: + server: ${{ secrets.FTP_DYNAMSOFT_LOCAL_SERVER }} + username: ${{ secrets.FTP_DYNAMSOFT_LOCAL_USER }} + password: ${{ secrets.FTP_DYNAMSOFT_LOCAL_PASSWORD }} + port: 21 + local-dir: ${{ runner.temp }}/DocHome/_site/ + server-dir: /www.dynamsoft.com/${{ inputs.doc-url }}/ + + - name: Trigger Webhook + run: | + curl -X POST -H "${{ secrets.WEBHOOK_USER }}" -H "${{ secrets.WEBHOOK_TOKEN }}" -H "Content-Type: application/json" -d "[\"/${{ inputs.doc-url }}/*\"]" ${{ secrets.WEBHOOK_URL }} + + - name: Update Sitemap + if: startsWith(inputs.doc-url, 'barcode-reader') || + startsWith(inputs.doc-url, 'capture-vision') || + startsWith(inputs.doc-url, 'label-recognition') || + startsWith(inputs.doc-url, 'document-normalizer') || + startsWith(inputs.doc-url, 'code-parser') || + startsWith(inputs.doc-url, 'camera-enhancer') + run: | + cd ${{ runner.temp }}/DocHome/assets/scripts/GenerateSitemap + python3 GenerateSitemapByMenuTree.py --product dcv,dbr + curl -T ${{ runner.temp }}/DocHome/assets/scripts/GenerateSitemap/barcode-reader/docs/menu-tree-sitemap.xml ftp://${{ secrets.FTP_DYNAMSOFT_LOCAL_SERVER }}/www.dynamsoft.com/barcode-reader/docs/ --user ${{ secrets.FTP_DYNAMSOFT_LOCAL_USER }}:${{ secrets.FTP_DYNAMSOFT_LOCAL_PASSWORD }} + curl -T ${{ runner.temp }}/DocHome/assets/scripts/GenerateSitemap/capture-vision/docs/menu-tree-sitemap.xml ftp://${{ secrets.FTP_DYNAMSOFT_LOCAL_SERVER }}/www.dynamsoft.com/capture-vision/docs/ --user ${{ secrets.FTP_DYNAMSOFT_LOCAL_USER }}:${{ secrets.FTP_DYNAMSOFT_LOCAL_PASSWORD }} diff --git a/.github/workflows/called-workflow-build-sync-testing.yml b/.github/workflows/called-workflow-build-sync-testing.yml new file mode 100644 index 0000000..12477e2 --- /dev/null +++ b/.github/workflows/called-workflow-build-sync-testing.yml @@ -0,0 +1,73 @@ +name: Build-Sync-Preview + +# the workflow will be called by others +on: + workflow_call: + inputs: + doc-repo: + required: true + type: string + doc-url: + required: true + type: string + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + Build-Site-Preview: + # The type of runner that the job will run on + runs-on: [self-hosted, doc-build] + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + # Runs a set of commands using the runners shell + - name: Build the full site with preview branch + run: | + cd ${{ runner.temp }} + mkdir -p DocHome + git clone --depth 1 --branch preview https://github.com/dynamsoft-docs/${{ inputs.doc-repo }}.git ${{ inputs.doc-repo }} + git clone --depth 1 --branch preview https://github.com/dynamsoft-docs/Docs-Template-Repo.git Docs-Template-Repo + cp -rfp ./${{ inputs.doc-repo }}/* ./DocHome/ + cp -rfp ./Docs-Template-Repo/* ./DocHome/ + sed -i -e "1,3s/blob\/master$/blob\/preview/" \ + -e "1,3s/blob\/main$/blob\/preview/" ${{ runner.temp }}/DocHome/_config.yml + cd DocHome && bundle install && bundle exec jekyll build + + - name: "Create Tar files" + run: tar -czvf ${{ inputs.doc-repo }}.tar.gz -C ${{ runner.temp }}/DocHome/_site . + + - name: Upload the built site as a single artifact + uses: actions/upload-artifact@v4.6.2 + with: + name: ${{ inputs.doc-repo }} + path: ${{ inputs.doc-repo }}.tar.gz + retention-days: 2 + + Sync-To-Testing: + # The type of runner that the job will run on + runs-on: [self-hosted, upload-test] + needs: Build-Site-Preview + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + # Runs a set of commands using the runners shell + - name: Download the artifact + uses: actions/download-artifact@v4.3.0 + with: + name: ${{ inputs.doc-repo }} + + - name: "Extract Tar files" + shell: cmd + run: | + mkdir ${{ runner.temp }}\DocHome\_site + tar -xzf ${{ inputs.doc-repo }}.tar.gz -C ${{ runner.temp }}\DocHome\_site + + - name: Sync files + uses: SamKirkland/FTP-Deploy-Action@v4.3.5 + with: + server: ${{ secrets.FTP_TEST_SITE_SERVER }} + username: ${{ secrets.FTP_TEST_SITE_USER }} + password: ${{ secrets.FTP_TEST_SITE_PASSWORD }} + protocol: ftps + port: ${{ secrets.FTP_TEST_SITE_PORT }} + local-dir: ${{ runner.temp }}\DocHome\_site/ + server-dir: /www.dynamsoft.com/${{ inputs.doc-url }}/ diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..768aba3 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,33 @@ +# This is a basic workflow to help you get started with Actions + +name: CI + +# Controls when the workflow will run +on: + # Triggers the workflow on push events to main and preview + push: + branches: + - main + - preview + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + # This workflow contains jobs called "Build-Main" and "Build-Preview" + Build-Main: + if: ${{ github.ref == 'refs/heads/main' }} + uses: dynamsoft-docs/Docs-Template-Repo/.github/workflows/called-workflow-build-sync-production.yml@main + with: + doc-repo: driver-license-scanner-docs-js + doc-url: driver-license-scanner/docs + secrets: inherit + + Build-Preview: + if: ${{ github.ref == 'refs/heads/preview' }} + uses: ./.github/workflows/called-workflow-build-sync-testing.yml + with: + doc-repo: driver-license-scanner-docs-js + doc-url: driver-license-scanner/docs/web/ + secrets: inherit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3e868e1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,41 @@ +# Layout templates +_layouts/** + +# Assets +assets/font-face/** +assets/img-icon/** +assets/js/** +assets/scripts/** +assets/css/** + +# Web resources +webres/** + +# Includes +_includes/productNav/* +!_/includes/productNav/driver-license-scannerNav.html +_includes/auto-version-list.html +_includes/head.html +_includes/liquid_autoGenerateHistoryList.html +_includes/liquid_breadcrumb.html +_includes/liquid_generateFullTree.html +_includes/liquid_searchVersionTreeFile.html +_includes/livehelp.html +_includes/main-page-head.html +_includes/page_footer.html +_includes/page_header.html +_includes/productNav_OLD.html +_includes/productNav.html +_includes/search-input.html +_includes/trialLicense.html + +# Plugins +_plugins/** + +# Site resources +_site/** + +sitemap.xml +Hide_Tree_Page.md +Gemfile.lock +Gemfile \ No newline at end of file diff --git a/README.md b/README.md index bac34d4..00d7bdd 100644 --- a/README.md +++ b/README.md @@ -1 +1 @@ -# driver-license-scanner-docs-js \ No newline at end of file +WIP diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..8eec74c --- /dev/null +++ b/_config.yml @@ -0,0 +1,42 @@ +repository: dynamsoft-docs/driver-license-scanner-docs-js +repositoryUrl: https://github.com/dynamsoft-docs/driver-license-scanner-docs-js/blob/main +docFullPath: https://www.dynamsoft.com/driver-license-scanner/docs/web +firstLevelUrl: /driver-license-scanner/docs/web +docHomePage: /driver-license-scanner/docs/web/introduction/index.html +product-page-url: https://www.dynamsoft.com/driver-license-scanner + +product-name: /driver-license-scanner-js/ +product-title: Dynamsoft Driver License Scanner JavaScript Edition + +introduction: /driver-license-scanner/docs/web/introduction/ +code-gallery: /driver-license-scanner/docs/web/code-gallery/ +api: /driver-license-scanner/docs/web/api/ +guides: /driver-license-scanner/docs/web/guides/ +release-notes: /driver-license-scanner/docs/web/release-notes/ + +useVersionTree: true + +assets: /driver-license-scanner/docs/web/assets/ +edit_icon: /driver-license-scanner/docs/web/assets/img-icon/edit-icon.png +smile_icon: /driver-license-scanner/docs/web/assets/img-icon/icon-smile.png +sad_icon: /driver-license-scanner/docs/web/assets/img-icon/icon-sad.png +download: /driver-license-scanner/downloads/ + +plugins: + - jekyll-sitemap + +defaults: + - scope: + path: "" + values: + layout: "default-layout" + noTitleIndex: true + needAutoGenerateSidebar: true + needGenerateH3Content: true + - scope: + path: "Hide_Tree_Page.html" + values: + sitemap: false + +url: https://www.dynamsoft.com # sitemap root +baseurl: /driver-license-scanner/docs/web diff --git a/_data/full_tree.yml b/_data/full_tree.yml new file mode 100644 index 0000000..b33176f --- /dev/null +++ b/_data/full_tree.yml @@ -0,0 +1,6 @@ +tree_file_list: + - sidelist-introduction.html + - sidelist-guides.html + - sidelist-api.html + - sidelist-release-notes.html + - sidelist-full-tree.html \ No newline at end of file diff --git a/_data/product_version.yml b/_data/product_version.yml new file mode 100644 index 0000000..4574c27 --- /dev/null +++ b/_data/product_version.yml @@ -0,0 +1,4 @@ +useGroupedVersion: true + +version_info_list: + - value: latest version (X.y) \ No newline at end of file diff --git a/_includes/sidelist-api.html b/_includes/sidelist-api.html new file mode 100644 index 0000000..287adda --- /dev/null +++ b/_includes/sidelist-api.html @@ -0,0 +1,2 @@ +
No image scanned. Please try again.
"; +} +``` + +### `dispose()` + +Cleans up resources and hides UI components. + +#### Syntax + +```typescript +dispose(): void +``` + +#### Code Snippet + +```typescript +driverLicenseScanner.dispose(); +console.log("Scanner resources released."); +``` + +## Interfaces + +### DriverLicenseScannerConfig + +Configuration optiosn for initializing a Driver License Scanner. + +```typescript +export interface DriverLicenseScannerConfig { + license?: string; + container?: HTMLElement | string; + + workflowConfig?: DriverLicenseWorkflowConfig; + + // Dynamsoft Core Vision(DCV) specific configs + templateFilePath?: string; + utilizedTemplateNames?: UtilizedTemplateNames; + engineResourcePaths?: EngineResourcePaths; + + // Views Config + scannerViewConfig?: DriverLicenseScannerViewConfig; + resultViewConfig?: DriverLicenseResultViewConfig; + correctionViewConfig?: DriverLicenseCorrectionViewConfig; + + showResultView?: boolean; + showCorrectionView?: boolean; +} +``` + +#### Properties + +| Property | Type | Default Value | Description | +| ----------------------- | -------------------------------- | ------------- | ----------------------------------------------------------------- | +| `license` | `string` | `N/A` | The license key to activate the barcode scanner. | +| `container` | `HTMLElement \| string` | `N/A` | The HTML element or selector where the scanner will be mounted. | +| `workflowConfig` | `DriverLicenseWorkflowConfig` | `N/A` | Configuration settings for the driver license scanning workflow. | +| `templateFilePath` | `string` | `N/A` | Path to the template file for Dynamsoft Core Vision processing. | +| `utilizedTemplateNames` | `UtilizedTemplateNames` | `N/A` | Names of templates to be used during scanning. | +| `engineResourcePaths` | `EngineResourcePaths` | `N/A` | Paths to engine resource files required by Dynamsoft Core Vision. | +| `scannerViewConfig` | `DriverLicenseScannerViewConfig` | `N/A` | Configuration options for the scanner view interface. | +| `resultViewConfig` | `DriverLicenseResultViewConfig` | `N/A` | Configuration options for the result display | +| `showResultView` | `boolean` | `True` | Whether to display the result view after scanning. | +| `showCorrectionView` | `boolean` | `True` | Whether to display the correction view for manual adjustments. | diff --git a/articles/faq/index.md b/articles/faq/index.md new file mode 100644 index 0000000..97a938b --- /dev/null +++ b/articles/faq/index.md @@ -0,0 +1,10 @@ +--- +layout: default-layout +title: #Dynamsoft Driver License Scanner JavaScript Edition - FAQ +description: #Dynamsoft Driver License Scanner JavaScript Edition FAQ +keywords: #FAQ, Dynamsoft Driver License Scanner JavaScript Edition, Frequently Asked Questions +needAutoGenerateSidebar: true +permalink: /faq/index.html +--- + +# Frequently Asked Questions diff --git a/articles/guides/customize.md b/articles/guides/customize.md new file mode 100644 index 0000000..c3d088f --- /dev/null +++ b/articles/guides/customize.md @@ -0,0 +1 @@ +# User Guide for customizing DDLS JavaScript Edition diff --git a/articles/guides/index.md b/articles/guides/index.md new file mode 100644 index 0000000..bd6e0f7 --- /dev/null +++ b/articles/guides/index.md @@ -0,0 +1,67 @@ +--- +layout: default-layout +title: #Dynamsoft Driver License Scanner JavaScript Edition - Developer Guide +description: #Dynamsoft Driver License Scanner JavaScript Edition Developer Guide +keywords: Developer Guides, Dynamsoft Driver License Scanner JavaScript Edition, Developer Guide, Dynamsoft Driver License Scanner JavaScript Edition Developer Guides +needAutoGenerateSidebar: true +permalink: /guides/index.html +--- + +# User Guide for the DDLS JavaScript Edition + +This user guide will walk you through a Hello World sample web application that scans a driver license document using the DDLS JavaScript Edition SDK. We recommend using this sample as a reference when creating your own application. + +> [!TIP] +> Please visit the [Introduction]({{ site.introduction }}index.html) page to learn about the architecture of DDLS with respect to other Dynamsoft products, and the system requirements of the DDLS JavaScript Edition. + +## License + +### Trial License + +When getting started with DDLS JavaScript Edition, we recommend getting your own 30-day trial license through the following modal: + +{% include trialLicense.html %} + +The trial license can be renewed via the [customer portal](TODO: DL LINK) twice, each time for another 15 days, giving you a total of 60 days to develop your own application using the solution. Please contact the [Dynamsoft Support Team](https://www.dynamsoft.com/company/contact/) if you need more time for a full evaluation or have any questions. + +## Quick Start - Hello World + +The first step in using **DDLS** is to obtain its library files. You can acquire them from one of the following sources: + +1. [**GitHub**](https://github.com/Dynamsoft/driver-license-scanner-javascript) – Contains the source files for the **DDS** SDK, which can be compiled into library files. +2. [**npm**](https://www.npmjs.com/package/dynamsoft-driver-license-scanner) – Provides precompiled library files via npm for easier installation. +3. [**CDN**](https://cdn.jsdelivr.net/npm/dynamsoft-driver-license-scanner) – Delivers precompiled library files through a CDN for quick and seamless integration. + +You can choose one of the following methods to set up a Hello World page: + +1. **Build from Source** – Download the source files from GitHub and compile the resource script yourself. +2. **Using Precompiled Script** – Use the precompiled resource scripts from npm or the CDN for a quicker setup. + +### Option 1: Build from Source + +This method retrieves all **DDLS** source files from its [GitHub Repository](https://github.com/Dynamsoft/driver-license-scanner-javascript), compiles them into a distributable package, and then runs a _ready-made_ Hello World sample page included in the repository: + +1. Download **DDS** from [GitHub](https://github.com/Dynamsoft/driver-license-scanner-javascript) as a compressed folder. +2. Extract the contents of the archive, and open the extracted directory in a code editor. +3. Set your [license key](#get-a-trial-license) in the Hello World sample: + 1. Open the Hello World sample at ([`/samples/hello-world.html`](https://github.com/Dynamsoft/driver-license-scanner-javascript/blob/main/samples/hello-world.html)). + 2. Search for `"YOUR_LICENSE_KEY_HERE"`, then replace it with your actual license key. +4. Install project dependencies + In the terminal, navigate to the project root directory and run: + ```bash + npm install + ``` +5. Build the project + After installing dependencies, build the project by running: + ```bash + npm run build + ``` +6. Serve the project locally + Start the local server by running: + `bash + npm run serve + ` + Once the server is running, open the application in a browser using the address provided in the terminal output after running `npm run serve`. + +> [!TIP] +> See the server configuration details in [`/dev-server/index.js`](https://github.com/Dynamsoft/driver-license-scanner-javascript/blob/main/dev-server/index.js). diff --git a/articles/index.md b/articles/index.md new file mode 100644 index 0000000..d4f236b --- /dev/null +++ b/articles/index.md @@ -0,0 +1,18 @@ +--- +layout: home-page +title: #Dynamsoft Driver License Scanner JavaScript Edition Documentation +keywords: #Dynamsoft Driver License Scanner JavaScript Edition, documentation +description: #Dynamsoft Driver License Scanner JavaScript Edition Documentation Homepage +permalink: /index.html +--- + +# {{ site.product-title }} + +- [Introduction]({{ site.introduction }}index.html) + +- Developer Guides + - [DDLS User Guide]({{ site.guides }}index.html) + - [Customize your Driver License Scanner]({{ site.guides }}customize.html) + +- [API References]({{ site.api }}index.html) +- [Release Notes]({{ site.release-notes }}index.html) diff --git a/articles/introduction/index.md b/articles/introduction/index.md new file mode 100644 index 0000000..6d5c859 --- /dev/null +++ b/articles/introduction/index.md @@ -0,0 +1,76 @@ +--- +layout: default-layout +title: Introduction to Dynamsoft Driver License Scanner JavaScript Edition +description: #Dynamsoft Driver License Scanner JavaScript Edition Introduction +keywords: #introduction, Dynamsoft Driver License Scanner JavaScript Edition +needAutoGenerateSidebar: true +permalink: /introduction/index.html +--- + +# Introduction + +In an increasingly digital world where identity verification plays a critical role across industries such as banking, retail, travel, and law enforcement, being able to extract information from a driver's license quickly and accurately is more important than ever. Driver's licenses are one of the most commonly used forms of ID, and automating the process of reading them can save time, reduce errors, and streamline onboarding or check-in processes. + +With the Dynamsoft Driver License Scanner (DDLS) JavaScript Edition, developers can easily integrate driver license scanning capabilities directly into their web applications using just a few lines of code. DDLS extracts key data such as name, address, date of birth, and license number, converting physical documents into structured, readable digital information in real time. + +Whether you are building a customer portal, a check-in kiosk, or a mobile-first identity verification solution, DDLS JavaScript Edition offers powerful performance, flexibility, and ease of use to help you create seamless and secure user experiences. + +The change maintains the flow while removing the specific mention of OCR technology, keeping the focus on the capabilities and benefits of the solution. + +## Common Usage Scenarios + +1. Identity Verification - Driver's licenses serve as primary identification documents across numerous industries. DDLS JavaScript Edition enables quick and accurate identity confirmation for any application requiring reliable user verification, from online services to physical access points. + +2. Document Processing - Any system that handles identity documents can benefit from automated data extraction. DDLS JavaScript Edition transforms manual document processing into an efficient, digital workflow that reduces errors and processing time. + +## Core Products + +The DDLS JavaScript Edition relies on three of Dynamsoft's core products: + +1. [**Dynamsoft Label Recognizer**]({{ site.dcvb_root }}introduction/index.html#dynamsoft-label-recognizer) - A zonal OCR library that is responsible for the text extraction portion of the DDLS workflow. + +2. [**Dynamsoft Code Parser**]({{ site.dcvb_root }}introduction/index.html#dynamsoft-code-parser) - The library designed for parsing encrypted results from the _Barcode Reader_ or _Label Recognizer_ into human-readable information. + +3. [**Dynamsoft Camera Enhancer**]({{ site.dcvb_root }}introduction/index.html#dynamsoft-camera-enhancer) - The library that is responsible for all camera control features, in addition to camera enhancements and basic UI configuration features. + +## Supported Driver License Formats + +The **Dynamsoft Driver License Scanner (DDLS) JavaScript Edition** supports **PDF417** barcodes, the standard encoding format used on driver's licenses and identification cards for automated data extraction and verification. + +**PDF417 Barcode Format** + +- Two-dimensional stacked barcode symbology + +- High data capacity with error correction capabilities + +- Contains structured fields for personal information, license details, and verification data + +- Standardized field codes for consistent data extraction across different jurisdictions + +## Design Principles + +The **DDLS JavaScript Edition** is built around three fundamental design principles that prioritize developer efficiency and user experience: + +1. **Minimal Code Implementation** - Our high-level API delivers complete recognition and parsing functionality in just a few lines of code, dramatically reducing both development time and ongoing maintenance overhead. + +2. **Ready-to-Deploy UI Components** - Pre-built interface components and thoughtfully designed layouts eliminate the need for custom UI development, allowing developers to integrate scanning functionality immediately without additional design work. + +3. **Streamlined Customization** - Intuitive configuration options provide flexible control over scanner behavior and performance settings, making it simple to adapt the solution to specific requirements without complexity. + +## Views + +**DDLS** workflows are composed of **Views**, each of which comes **ready-to-use** and can be easily customized using configuration objects. + +**DDLS** includes the following Views for license scanning and correction:: + +1. **Driver License Scanner View** – Captures documents using a camera scanner. + +2. **Driver License Result View** – Provides a preview of the scanned license and it's data. + +**Driver License Scanner View** +The **`DriverLicenseScannerView`** presents the camera interface along with UI elements for controlling the scanner and camera settings. It also includes icons to load an image from the photo library or close the scanner. A scan guide frame is positioned in the center to help users accurately align the driver’s license for optimal scanning results. + +**Driver License Result View** +The **`DriverLicenseResultView`** is responsible for displaying the final parsed results of the driver license recognition process. The extracted data, along with their corresponding field names, are presented in a scrollable form view beneath the original image of the scanned driver license. + +This view also includes two action buttons: one to copy the parsed results to the clipboard, and another to restart the scanning process if a new scan is needed. diff --git a/articles/release-notes/index.md b/articles/release-notes/index.md new file mode 100644 index 0000000..31ce564 --- /dev/null +++ b/articles/release-notes/index.md @@ -0,0 +1,10 @@ +--- +layout: default-layout +title: #Dynamsoft Driver License Scanner JavaScript Edition - Release Notes +description: #Dynamsoft Driver License Scanner JavaScript Edition Release Notes +keywords: Release Notes, Dynamsoft Driver License Scanner JavaScript Edition, Dynamsoft Driver License Scanner JavaScript Edition Release Notes +needAutoGenerateSidebar: true +permalink: /release-notes/index.html +--- + +# Release Notes diff --git a/search.md b/search.md new file mode 100644 index 0000000..39efa78 --- /dev/null +++ b/search.md @@ -0,0 +1,6 @@ +--- +layout: search-page +title: #Dynamsoft Driver License Scanner JavaScript Edition Search +keywords: #Dynamsoft Driver License Scanner JavaScript Edition Documentation Search +cx: 912cbb35fff874a8d +--- diff --git a/web.config b/web.config new file mode 100644 index 0000000..e1b87a9 --- /dev/null +++ b/web.config @@ -0,0 +1,34 @@ + +