Dynamsoft Web Capture SDK로 Angular 문서 스캐너를 구축하는 방법
26068 단어 angulartypescriptdocumentwebdev
각도 개발 환경
각도 CLI v13.3.7
npm install -g @angular/cli
ng --version
Angular CLI: 13.3.7
Node: 16.13.1
Package Manager: npm 8.1.2
OS: win32 x64
Angular: 13.3.10
... animations, common, compiler, compiler-cli, core, forms
... platform-browser, platform-browser-dynamic, router
Package Version
---------------------------------------------------------
@angular-devkit/architect 0.1303.7
@angular-devkit/build-angular 13.3.7
@angular-devkit/core 13.3.7
@angular-devkit/schematics 13.3.7
@angular/cli 13.3.7
@schematics/angular 13.3.7
ng-packagr 13.3.1
rxjs 7.5.5
typescript 4.6.4
단계별 Angular 문서 스캐너 앱 만들기
ng new
명령을 통해 새 Angular 프로젝트를 스캐폴딩하고 Dynamsoft Web Capture SDK를 터미널에 설치합니다.ng new angular-document-scanner
cd angular-document-scanner
npm i mobile-web-capture
그런 다음
angular.json
파일을 열어 자산을 구성합니다.
"build":
{
"builder": "@angular-devkit/build-angular:browser",
"options": {
...
"assets": [
"src/favicon.ico",
"src/assets",
{
"glob": "**/*",
"input": "./node_modules/mobile-web-capture/dist",
"output": "assets/dynamic-web-twain"
}
...
],
},
...
},
ng build
를 실행하면 모든 정적 리소스 파일이 assets/dynamic-web-twain
폴더에 복사됩니다.다음 단계는
document-scanner.component.css
, document-scanner.component.html
, document-scanner.component.spec.ts
및 document-scanner.component.ts
파일을 포함하는 문서 스캐너 구성 요소를 만드는 것입니다.ng generate component document-scanner
대상 UI 레이아웃에는 다음 요소가 포함됩니다.
HTMLSelectElement
입니다. 데스크톱 브라우저의 경우 모든 USB 카메라가 나열됩니다. 모바일 브라우저의 경우 모든 전면 및 후면 카메라가 나열됩니다. HTMLDivElement
. document-scanner.component.html
의 UI 구현은 다음과 같습니다.
<div class="document-scanner">
<h1>Angular Document Scanner</h1>
<div>
<label for="videoSource">Video source: </label>
<select id="videoSource"></select>
<p></p>
<button id="scanButton" (click)="scanDocument()">Scan Document</button> <button id="scanButton" (click)="downloadDocument()">Download Document</button>
</div>
<h3>Document Container</h3>
<div id="dwtcontrolContainer"></div>
</div>
이제
document-scanner.component.ts
에 해당 TypeScript 코드를 추가하겠습니다.mobile-web-capture
패키지에서 SDK 모듈을 가져옵니다.import Dynamsoft from 'mobile-web-capture';
import { WebTwain } from 'mobile-web-capture/dist/types/WebTwain';
ngOnInit()
에서 SDK를 초기화합니다.dwtObject: WebTwain | undefined;
videoSelect: HTMLSelectElement | undefined;
sourceDict: any = {};
ngOnInit(): void {
this.videoSelect = document.querySelector('select#videoSource') as HTMLSelectElement;
Dynamsoft.DWT.ProductKey = "LICENSE-KEY";
Dynamsoft.DWT.ResourcesPath = 'assets/dynamic-web-twain';
Dynamsoft.DWT.Containers = [{ ContainerId: 'dwtcontrolContainer' }];
Dynamsoft.DWT.UseLocalService = false;
Dynamsoft.DWT.Load();
Dynamsoft.DWT.RegisterEvent('OnWebTwainReady', () => { this.onReady(); });
}
여기서 두 가지 사항에 유의해야 합니다.
LICENSE-KEY
를 업데이트하십시오. assets/dynamic-web-twain
파일에서 구성한 대로 리소스 경로angular.json
를 설정합니다. OnWebTwainReady
이벤트가 트리거되면 SDK 인스턴스를 가져오고 카메라 소스 목록을 업데이트합니다.onReady() {
this.dwtObject = Dynamsoft.DWT.GetWebTwain('dwtcontrolContainer');
this.updateCameraList();
}
updateCameraList() {
if (this.videoSelect && this.dwtObject) {
this.videoSelect.options.length = 0;
this.dwtObject.Addon.Camera.getSourceList().then((list) => {
for (var i = 0; i < list.length; i++) {
var option = document.createElement('option');
option.text = list[i].label || list[i].deviceId;
if (list[i].label) {
this.sourceDict[list[i].label] = list[i].deviceId;
}
else {
this.sourceDict[list[i].deviceId] = list[i].deviceId;
}
if (this.videoSelect) this.videoSelect.options.add(option);
}
});
}
}
카메라 소스를 선택하고 문서 스캔을 시작합니다.
scanDocument() {
if (this.videoSelect) {
let index = this.videoSelect.selectedIndex;
if (index < 0) return;
var option = this.videoSelect.options[index];
if (this.dwtObject) {
this.dwtObject.Addon.Camera.selectSource(this.sourceDict[option.text]).then(camera => {
if (this.videoSelect) this.createCameraScanner(this.sourceDict[option.text]);
});
}
}
}
async createCameraScanner(deviceId: string): Promise<void> {
if (this.dwtObject) {
await this.dwtObject.Addon.Camera.closeVideo();
this.dwtObject.Addon.Camera.scanDocument({
scannerViewer: {
deviceId: deviceId,
fullScreen: true,
autoDetect: {
enableAutoDetect: true
},
continuousScan: {
visibility: false,
enableContinuousScan: false
}
}
}).then(
function () { console.log("OK"); },
function (error: any) { console.log(error.message); });
}
}
문서 이미지를 캡처하고 편집한 후 로컬 디스크에 저장할 수 있습니다.
downloadDocument() {
if (this.dwtObject) {
this.dwtObject.SaveAsJPEG("document.jpg", this.dwtObject.CurrentImageIndexInBuffer);
}
}
데스크톱 및 모바일 브라우저에서 Angular 문서 스캐너를 실행합니다.
ng serve --ssl
데스크톱 브라우저
모바일 브라우저
GitHub 페이지 배포
한 가지 더는 Angular 문서 스캐너 프로젝트를 GitHub 페이지에 배포하는 것입니다.
단계는 다음과 같습니다.
angular.json
파일을 열어 크기budgets를 늘립니다. 기본 예산 설정으로 인해 WARNING in budgets, maximum exceeded for initial
오류가 발생할 수 있습니다."budgets": [
{
"type": "initial",
"maximumWarning": "2.5mb",
"maximumError": "5mb"
},
]
GitHub 작업 워크플로를 만듭니다.
name: Build and Deploy
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: All things angular
uses: AhsanAyaz/[email protected]
with:
github_access_token: ${{ secrets.GITHUB_TOKEN }}
build_configuration: production
base_href: /angular-document-scanner/
deploy_branch: gh-pages
angular_dist_build_folder: dist/angular-document-scanner
angular-document-scanner
를 프로젝트 이름으로 바꿔야 합니다.Settings > Pages
로 이동하여 gh-pages
분기가 있는 GtiHub 페이지를 시작합니다. Enforce HTTPS
옵션을 선택하는 것을 잊지 마십시오. 데모 페이지 사용해 보기
https://yushulx.me/angular-document-scanner/
소스 코드
https://github.com/yushulx/angular-document-scanner
Reference
이 문제에 관하여(Dynamsoft Web Capture SDK로 Angular 문서 스캐너를 구축하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/yushulx/how-to-build-angular-document-scanner-with-dynamsoft-web-capture-sdk-4fm2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)