Thanks for Downloading Dynamic Web TWAIN 30-Day Trial!
Your download will start shortly. If your download does not begin, click here to retry.
Use Web TWAIN in Vue
Vue is a progressive framework for building user interfaces. Check out the following guide on how to integrate DWT
into a Vue application.
Preparation
Make sure you have node, yarn, and Vue CLI installed. node 14.4.0
, yarn 1.22.4
, and @vue/cli 4.46
are used in the example below.
Create the sample project
Create a bootstrapped raw Vue application
vue create dwt-vue
Navigate to the root directory of the application and install the dwt
and ncp
package
yarn add dwt
yarn add ncp
ncp
is used to copy static resources files.
Configure the project
Open package.json
and change scripts
as seen below:
"scripts": {
"serve": "ncp node_modules/dwt/dist public/dwt-resources && vue-cli-service serve",
"build": "vue-cli-service build&& ncp node_modules/dwt/dist build/dwt-resources",
"lint": "vue-cli-service lint"
},
The change ensures the static files required to run
DWT
are copied over to the resulting built project.
We can get these resource files in a few different ways. See our resource loading guide to see how to load resource files from our official SDK, CDNs, or package managers.
Start to implement
Edit the default component
Change the file /src/components/HelloWorld.vue
to match the following template
and script
(keep the style
as is)
<template>
<div class="hello">
<h1></h1>
<select id="sources" v-model="selectedIndex">
<option
v-for="(source, index) in sourceList"
v-bind:value="index"
:key="index"
>
{{ source.displayName }}
</option>
</select>
<button @click="acquireImage()">Acquire Images</button>
<button @click="openImage()">Open Documents</button>
<br />
<br />
<div v-bind:id="containerId"></div>
</div>
</template>
<script>
import Dynamsoft from "dwt";
export default {
name: "HelloWorld",
props: {
msg: String,
},
data() {
return {
containerId: "dwtcontrolContainer",
sourceList: [],
selectedIndex: 0,
};
},
mounted() {
/**
* ResourcesPath & ProductKey must be set in order to use the library!
*/
Dynamsoft.DWT.ResourcesPath = "/dwt-resources";
Dynamsoft.DWT.ProductKey = "YOUR-PRODUCT-KEY";
Dynamsoft.DWT.Containers = [
{
WebTwainId: "dwtObject",
ContainerId: this.containerId,
Width: "100%",
Height: "400px",
},
];
Dynamsoft.DWT.RegisterEvent("OnWebTwainReady", () => {
this.Dynamsoft_OnReady();
});
Dynamsoft.DWT.Load();
},
methods: {
/**
* Dynamsoft_OnReady is called when a WebTwain instance is ready to use.
* In this callback we do some initialization.
*/
Dynamsoft_OnReady() {
this.DWTObject = Dynamsoft.DWT.GetWebTwain(this.containerId);
this.DWTObject.GetDevicesAsync()
.then((deviceList) => {
this.sourceList = deviceList;
})
.catch((e) => {
console.error(e);
});
},
/**
* Acquire images from scanners or cameras or local files
*/
acquireImage() {
if (!this.DWTObject) {
alert("dwt init fail");
return;
}
this.DWTObject.SelectDeviceAsync(this.sourceList[this.selectedIndex])
.then(() => {
return this.DWTObject.AcquireImageAsync({
IfCloseSourceAfterAcquire: true
});
})
.catch((e) => {
console.error(e);
});
},
/**
* Open local images.
*/
openImage() {
if (!this.DWTObject) {
alert("dwt init fail");
return;
}
this.DWTObject.IfShowFileDialog = true;
/**
* Note:
* This following line of code uses the PDF Rasterizer which is an extra add-on that is licensed seperately
*/
this.DWTObject.Addon.PDF.SetConvertMode(
Dynamsoft.DWT.EnumDWT_ConvertMode.CM_RENDERALL
);
this.DWTObject.LoadImageEx(
"",
Dynamsoft.DWT.EnumDWT_ImageType.IT_ALL,
() => {
//success
},
() => {
//failure
}
);
},
},
};
</script>
Note:
containerId
specifies the DIV to createDWT
viewer, which is defined in thetemplate
.OnWebTwainReady
is the callback triggered whenDWT
initialization succeeds.ProductKey
must be set to a valid trial or full key.ResourcesPath
is set to the location of the static files mentioned in Configure the project.
Try running the project
yarn serve
On desktop
If you have installed DWT
and have configured a valid ProductKey
. You will have a working page to scan documents from your scanner now. Otherwise, you should see instructions on this page that guides you on installing the library.
On mobile
You should be able to open a file or capture an image.