未找到

未发布 扫描识别工具Dynamic Web TWAIN使用教程:建立一个“Hello World”扫描页面
by Harriet666 keys 分享 1511504073281
Dynamic Web TWAIN是一个专为Web应用程序设计的TWAIN扫描识别控件。你只需在TWAIN接口写几行代码,就可以用兼容TWAIN的扫描仪扫描文档或从数码相机/采集卡中获取图像。
 
本文教你Dynamic Web TWAIN中只需3个步骤在5分钟内创建一个Web扫描应用程序的方法!
 
注意:开始之前,请确保您已经下载并安装了最新版本的Dynamic Web TWAIN。如果还没有安装,请在这里下载Dynamic Web TWAIN最新版

步骤一:启动一个Web应用程序

1.1 将Dynamsoft的Resources文件夹复制到您的项目中
Resources文件夹通常在C:\Program Files (x86)\Dynamsoft\Dynamic Web TWAIN SDK {Version Number} {Trial}\
image003
 
1.2 创建一个空的HTML页面
请将空的html页面与Resources文件夹放在一起,如下所示:
image004
 
步骤二:将Dynamic Web TWAIN添加到HTML页面
2.1 包含两个Dynamsoft JS文件
 
2.2 添加一个Dynamic Web TWAIN容器
1
<div id="dwtcontrolContainer"></div>
 
注意: “dwtcontrolContainer”是div的默认ID。如有必要,您可以在文件dynamsoft.webtwain.config.js中更改它。
 
步骤三:使用Dynamic Web TWAIN
3.1 添加一个扫描按钮和最小的脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<input type="button" value="Scan" onclick="AcquireImage();">
<script type="text/javascript" data-filtered="filtered">
    var DWObject;
    function Dynamsoft_OnReady(){
        DWObject = Dynamsoft.WebTwainEnv.GetWebTwain('dwtcontrolContainer');
    }
    function AcquireImage(){
        if(DWObject) {
            DWObject.IfDisableSourceAfterAcquire = true;
            DWObject.SelectSource();
            DWObject.OpenSource();
            DWObject.AcquireImage();
        }
    }
</script>
 
3.2 查看完成的代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<title data-filtered="filtered">Hello World</title>
<script type="text/javascript" src="Resources/dynamsoft.webtwain.initiate.js" data-filtered="filtered"> </script>
<script type="text/javascript" src="Resources/dynamsoft.webtwain.config.js" data-filtered="filtered"> </script>
 
 
<input type="button" value="Scan" onclick="AcquireImage();">
<div id="dwtcontrolContainer"> </div>
<script type="text/javascript" data-filtered="filtered">
        var DWObject;
        function Dynamsoft_OnReady(){
            DWObject = Dynamsoft.WebTwainEnv.GetWebTwain('dwtcontrolContainer');
        }
        function AcquireImage(){
            if(DWObject) {
                DWObject.IfDisableSourceAfterAcquire = true;
                DWObject.SelectSource();
                DWObject.OpenSource();
                DWObject.AcquireImage();
            }
        }
    </script>
 
3.3 查看正在运行的扫描页面
如果你打开项目中的Hello World页面,它应该是这样的:
image005
 
现在,您可以点击“扫描”按钮选择一个设备,如下所示:
image006
 
注意:
  • 选择来源对话框中只列出了TWAIN兼容设备。如果连接的扫描仪没有显示在列表中,请按照这篇文章排除故障。
  • 如果您手边没有扫描仪,则可以安装虚拟扫描仪 - 由TWAIN工作组开发的扫描仪模拟器 - 用于测试目的。

扫描完成后,图像将显示在内置的Dynamic Web TWAIN查看器中:
image007
 
如果您安装了Dynamic Web TWAIN的30天试用版,您可以在C:\Program Files (x86)\Dynamsoft\Dynamic Web TWAIN SDK {Version Number} {Trial}\Samples\Getting Started\获取完整的Hello World应用程序。
image008
 
本次教程到此结束,希望能对Dynamic Web TWAIN的用户带来帮助,接下来还会有更多的相关教程,敬请期待!
未发布 【教程】网络安全工具FileAudit安装指南
by Harriet666 keys 分享 1511429161006
FileAudit可用于对Windows服务器上文件和文件夹的所有访问进行主动跟踪、审核、报告和警告。本文为大家介绍FileAudit的具体安装步骤。
 
FileAudit安装包(FileAudit_Setup.exe)点击下载>>>
 
英文和法文版本是相同的,并且与32位和64位平台兼容。
 
请在安装FileAudit之前阅读要求
 
1、要启动FileAudit安装过程,请使用管理员帐户运行FileAudit_Setup.exe。
 
2、启动安装过程:

 
3、在随后的窗口中,单击 下一步>:
 
4、仔细阅读并接受最终用户许可协议,然后单击下一步> :
 
5、在随后的窗口中,输入您的信息,然后单击下一步> :
 
6、可根据需要更改安装文件夹:
 
7、在“安装类型”中,选中“Complete”复选框并点击下一步> :
 
8、点击 “安装”开始FileAudit安装:
 
9、向导将在FileAudit成功安装时报告。点击“完成 ”:

未发布 【教程】网络安全工具FileAudit中配置你的第一个Audit路径
by Harriet666 keys 分享 1511773072972
FileAudit可用于对Windows服务器上文件和文件夹的所有访问进行主动跟踪、审核、报告和警告。本文为大家介绍如何配置你的第一个Audit路径。
 
FileAudit免费下载>>>
 
1、启动FileAudit。

你会发现3个主要分组:
  • Audit:允许您配置审计和警报。
  • Access:显示“文件访问查看器”和“统计”视图。
  • Tools:自定义FileAudit设置,安排自动报告、清理数据库和访问帮助文件。
右上角的“连接”按钮允许您远程连接到“FileAudit服务”的另一个系统。
 
2、要设置您的第一个审计路径,请单击FileAudit集线器中的“添加文件夹”。点击“+”按钮,浏览您的目标文件夹:
 
3、验证了您的选择后,将弹出“FileAudit路径向导”,以指导您完成配置文件夹审计的过程。

该向导将显示所选文件夹的配置状态,并突出显示缺少的任何需求或设置。对于每个必要的操作,您可以选择自动完成(通过向导)或手动完成。我们强烈建议您将FileAudit自动配置用于所有设置。
 
4、需要操作的列表。
 
5、选择自动或手动处理。
 
6、FileAudit将优化NTFS审计设置。
 
7、当NTFS Audit设置被禁用时,FileAudit检查并可以启用它。
 
8、文件夹主机将被添加到“许可服务器”列表中。
 
9、启用实时事件监控。
 
10、您选择的文件夹现在由FileAudit进行监控。所有访问事件将被存储在FileAudit数据库中。
 
注意:
有几个不同的方法来选择要审核的文件/文件夹路径。除了以上方法外,您还可以:
  • 通过右键单击Windows资源管理器中的文件或文件夹启动控制台,然后在“上下文菜单”中选择FileAudit。在这种情况下,前面的步骤将被跳过,因为文件/文件夹路径被直接导入FileAudit控制台。
  • 显示“文件访问查看器”并直接在“路径”字段中输入目标路径。您也可以在“文件访问查看器”中找到两个按钮来添加文件夹或文件。
  • 只需使用“Audit配置”部分中的两个贴图“添加文件夹”或“添加文件”即可。
另外,FileAudit总是检查在不同视图和设置中输入的每个路径的配置状态,例如:
  • “文件访问查看器”
  • 预定的报告配置
  • 定义警报规则
未发布 图像工具包VintaSoftImaging.NET SDK发布v8.5,新增独立web服务
by Harriet666 keys 分享 1496214322390
VintaSoftImaging.NET SDK是一个为.NET开发人员开发的,强大而易于使用的图像工具包。它可以让你加载、查看、处理、打印和保存数字图像,可将它们转换为不同的图像格式,可用多种TIFF和动态GIF文件提高您的工作效率。
 
【VintaSoftImaging.NET SDK点击下载>>>】
Version 8.5更新内容

Web图像查看器:

  • 创建了独立的Web服务,用于渲染图像和缩略图。该Web服务允许为任何.NET兼容的Web平台快速创建Web服务,例如ASP.NET WebForms、ASP.NET MVC、ServiceStack。Web服务位于Vintasoft.Imaging.Web.Services.dll程序集中。
  • 在ASP.NET MVC 5中创建用于渲染图像和缩略图的Web服务。该Web服务位于Vintasoft.Imaging.Web.Api2Controllers.dll程序集中。
  • 用于渲染图像和缩略图的HTML5和SVG控件现在与jQuery 2和3完全兼容。
  • 改进了web图像查看器中的放大镜功能。

在Web应用程序中处理图像:

  • 创建了独立的Web服务,用于图像处理。该Web服务允许为任何.NET兼容的Web平台快速创建Web服务,例如对于ASP.NET MVC、ASP.NET WebForms、ServiceStack。 Web服务位于Vintasoft.Imaging.Web.Services.dll程序集中。
  • 在ASP.NET MVC 5中创建用于图像处理的Web服务. Web服务位于Vintasoft.Imaging.Web.Api2Controllers.dll程序集中。
  • 负责图像处理的JavaScript类现在与jQuery 2和3完全兼容。

在Web应用程序中打印图像:

  • 负责图像打印的JavaScript类现在与jQuery 2和3完全兼容。

演示应用:

  • 创建新的Web演示应用程序,演示如何在ASP.NET MVC 5中查看、处理、注释和打印图像。
  • 修复演示应用程序中的一些小问题。

试用、下载、了解更多产品信息请点击"咨询在线客服"   

VintaSoftTwain ActiveX Control

未发布 Xamarin for Visual Studio v4.6发布,重新设计属性页和Manifest编辑器
by Harriet666 keys 分享 1500624306471
Xamarin for Visual Studio 让开发者可以在Windows上用 Visual Studio 开发原生 iOS, Android 和Windows应用程序。Xamarin for Visual Studio提供了流畅的iOS和Android的API查询,让开发者专注于应用本身。更棒的是,开发者完全可以利用一切他熟悉的开发工具进行开发,从而保证项目的高效性和持续性。

Xamarin for Visual Studio点击下载>>>

V4.6版本中包含的功能:


属性页和Manifest重新设计

在Xamarin 4.6中,我们重新设计了属性页和Manifest编辑器的重新设计,添加了一个新的编辑器:授权编辑器。

新的授权编辑器

新的编辑器现在是一个独立的编辑器。它的设计方式更加简单有效,双击你的entitlements.plist文件来启动。它的UI非常友好,用户可以轻松浏览和运用。

Bug修复

此版本包括以下问题修复:
  • iOS设备列表模拟器在更改iOS版本时不会更新。(4.6.0.289)
  • 修复VS在创建主机发现时挂起Zeroconf的问题。(4.6.0.289)
  • SayGoodbye目标在创建iOS库时失败。(4.6.0.279)
  • MSBuild过程由于XMA监控而产生较高的CPU使用率。(4.6.0.279)
  • 在某些情况下重新连接后,Mac Agent图标不会更新。(4.6.0.279)
  • 在设置中无法手动选择Xcode路径。(4.6.0.279)
  • Android存档 - 向用户发出关于所需的密钥库备份的信息,并有助于将其复制到其他位置。(4.6.0.279)
  • 无法在Visual Studio 2017中打开名为“资产”的目录。(4.6.0.279)
  • VS不会在新的iOS项目的.plist文件中设置MinimumOSVersion键。(4.6.0.279)
  • “链接器行为”下拉列表显示MtouchLink属性的“Don't Lin”默认值不正确。(4.6.0.279)
  • 在Mac Server连接对话框上显示Xamarin.iOS兼容性错误。(4.6.0.279)
  • 未选择数据源类时,不会禁用支持的系列和并发组。(4.6.0.279)
  • 更改连接流程,以便在打开解决方案自动连接时不显示任何对话框。(4.6.0.279)
  • 将UWP项目设置为启动项目时,设置正确的配置平台。(4.6.0.279)
  • tvOS绑定项目创建失败并出现多个错误。(4.6.0.279)
  • 在某些情况下,Visual Studio挂起ZeroConf (4.6.0.279)
  • 由于XMA上的进程监视器不正确,MSBuild进程会产生高CPU使用率。(4.6.0.240)
  • 建立iOS库时,SayGoobye目标失败。(4.6.0.240)
  • 本地静态参考(.a)源文件在构建后最终以0 Kb为单位。(4.6.0.240)
  • Android属性页面上的打字错误。(4.6.0.240)
  • F#Android项目无法构建。(4.6.0.240)
  • 关于部署WatchOS应用程序的System.IO.FileNotFoundException异常。(4.6.0.240)
  • 几个连接可靠性Mac代理修复。(4.6.0.240)
  • Android Library模板包含资源文件。(4.6.0.240)
  • Android项目模板不会生成mipmap图标。(4.6.0.240)
  • 无法在调试模式下解除tvOS扩展应用[电视服务扩展]。设备下拉菜单中没有tvOS模拟器。(4.6.0.240)
  • Visual Studio崩溃,试图启动没有运行的Android应用程序。(4.6.0.240)
  • 将默认模式下的watchOS设置为默认模拟器。(4.6.0.240)

已知的问题

创建会因错误取消:Project'project_name '需要在你的计算机上安装以下组件:...
构建Android应用程序可能需要安装其他组件。这几种情况下可能需要,例如使用新组件、NuGet软件包,或者是你在计算机上构建的第一个Xamarin.Forms解决方案。
Xamarin for Visual Studio检测到资源的缺失,并显示错误信息,要求下载并安装它们:
双击列表中的错误,开始下载并安装缺少的组件。
请记住,你需要在列表中看到Intellisense错误。
如果你尝试在解决方案中创建任何项目,而不安装缺少的组件,那么创建将被取消。
安装缺少组件的可选方法是从命令行中创建。

其他已知问题

如果你在使用此版本后降级为Xamarin 4.2或更低版本,则需要在Mac Server对话框中重新注册已知的Mac服务器。请使用“忘记Mac”选项,并再次配置服务器连接。

试用、下载、了解更多产品信息请点击"咨询在线客服"  

未发布 【示例教程】使用leadtools的WCF接口功能实现从web端上传Dicom影像文件
by Harriet666 keys 分享 1517903663716
Leadtools 19总套包下载>>>
 
leadtools为web端提供了wcf接口来供用户可以登录pacs系统,检索,查看以及上传影像。本篇博客讲解如何创建一个网页来实现上传功能,通过WCF进行dicom文件的上传时,是将dicom文件转换为base64数据流,分段进行传输。
 
本篇博客运行的前提是已经部署完成Leadtools HTML5 Web Viewer,可以正常浏览。参考https://www.evget.com/article/2018/2/6/27757.html
 
在部署完成后,将下面的代码复制到一个HTML文件中,即可运行进行测试。另外需要添加html文件所需的jquery.min.js到同文件夹路径下。
<head>
    <meta charset="UTF-8">
head>

<form onsubmit="return false;">
    <input type="hidden" name="file_base64" id="file_base64">
    <input type="file" id="fileup" multiple="multiple">
    <input type="submit" value="submit" onclick="$.post('./uploader.php', $(this).parent().serialize());">
    <div>
        <div id="msg">div>
    div>
form>
<script src="scripts/jquery.min.js">script>
<script>

    $(document).ready(function () {
        authcookie = login();
        document.cookie = "authcookie=" + authcookie;
        $("#fileup").change(function () {
            getauthcookie("authcookie");
            filelist = this.files;
            file = filelist[fileindex];
            upload(file);
        });
    });
    var authcookie;//保存authcookie
    var filelist;//上传文件列表
    var file;//当前上传文件
    var tempfile = "";//临时文件名称
    var position = 0;
    var size = 40000;//分段大小
    var done = false;
    var fileindex=0;//当前上传文件序列号

    function upload(tempfile) {
        if(position==0)
            done=false;
        var reader = new FileReader();
        if (file.size > position + 40000)
            reader.readAsArrayBuffer(file.slice(position, position + 40000));
        else 
            reader.readAsArrayBuffer(file.slice(position, file.size));
        reader.onload = function (e) {
            if (e.target.readyState === 2) {
                var base64string = base64ArrayBuffer(e.target.result);
                var data = {
                    authenticationCookie: authcookie,
                    dicomData: base64string,
                    fileName: tempfile,
                    status: position==0?"start":"append"
                };
                tempfile = senddata(JSON.stringify(data));
                if (!done) {
                    position += 40000;
                    upload(tempfile);
                    if (position+40000>file.size)
                        done = true;
                }
                else {
                    var data = {
                        authenticationCookie: authcookie,
                        dicomData: "",
                        fileName: tempfile,
                        status: "done"
                    };
                    tempfile = senddata(JSON.stringify(data));
                    position = 0;
                    $("#msg").html($("#msg").html()+"第"+(fileindex+1)+"个文件已经上传完成

"); fileindex += 1; if (fileindex < filelist.length) { file = filelist[fileindex]; upload(tempfile); } else { fileindex = 0; $("#msg").html($("#msg").html() + "文件全部已经上传完成

"); } } } }; } function senddata(data) { var result; $.ajax({ type:"post", url: "http://localhost/MedicalViewerService19/StoreService.svc/UploadDicomImage", data: data, contentType: "application/json", dataType: "json", success: function(data){result= data}, async: false }); return result; } function login() { var auth; var logininfo = { userName: "a", password: "a", userData: "" }; $.ajax({ type: "post", url: "http://localhost/MedicalViewerService19/AuthenticationService.svc/AuthenticateUser", data: JSON.stringify(logininfo), contentType: "application/json", dataType: "text", success: function (data) { auth= data }, async: false }); return auth; } function query() { } function getauthcookie() { document.cookie.split(";").forEach(function (val, index) { var index = val.indexOf("="); if ($.trim(val.substring(0, index)) == "authcookie") { authcookie = $.trim(val.substring(index + 1, val.length)); } }); return ""; } function base64ArrayBuffer(arrayBuffer) { var base64 = ''; var encodings = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; var bytes = new Uint8Array(arrayBuffer); var byteLength = bytes.byteLength; var byteRemainder = byteLength % 3; var mainLength = byteLength - byteRemainder; var a, b, c, d; var chunk; // Main loop deals with bytes in chunks of 3 for (var i = 0; i < mainLength; i = i + 3) { // Combine the three bytes into a single integer chunk = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2]; // Use bitmasks to extract 6-bit segments from the triplet a = (chunk & 16515072) >> 18; // 16515072 = (2^6 - 1) << 18 b = (chunk & 258048) >> 12; // 258048 = (2^6 - 1) << 12 c = (chunk & 4032) >> 6; // 4032 = (2^6 - 1) << 6 d = chunk & 63; // 63 = 2^6 - 1 // Convert the raw binary segments to the appropriate ASCII encoding base64 += encodings[a] + encodings[b] + encodings[c] + encodings[d]; } // Deal with the remaining bytes and padding if (byteRemainder == 1) { chunk = bytes[mainLength] a = (chunk & 252) >> 2; // 252 = (2^6 - 1) << 2 // Set the 4 least significant bits to zero b = (chunk & 3) << 4; // 3 = 2^2 - 1 base64 += encodings[a] + encodings[b] + '=='; } else if (byteRemainder == 2) { chunk = (bytes[mainLength] << 8) | bytes[mainLength + 1]; a = (chunk & 64512) >> 10; // 64512 = (2^6 - 1) << 10 b = (chunk & 1008) >> 4; // 1008 = (2^6 - 1) << 4 // Set the 2 least significant bits to zero c = (chunk & 15) << 2 // 15 = 2^4 - 1 base64 += encodings[a] + encodings[b] + encodings[c] + '='; } return base64; } script>

6

未发布 Google开源了Abseil,为C++和Python开发提供支持
by Harriet666 keys 分享 1507530171137
Google公开了其项目内部使用的一系列C++库,随后还会公开其Python库。

Abseil已在Google历经十多年的开发,它的目的是为Google编程人员在各种项目上的工作需求提供支持,这些项目包括Protocol Buffers、gRPC和TensorFlow等。Google评价Abseil为:
  • 它是从Google内部代码块中抽取出来的一系列最基础的软件库。作为基本的组成部分,这些软件库支撑了几乎全部Google在运行的项目。以前这些API是零零散散地嵌入在Google的大部分开源项目中,现在我们将它们规整在一起,形成这样一个全面的项目。
  • Abseil是Google代码库的最基本构建模块,其代码经过了生产环节测试,此后还会继续得到完全的维护。

最初,Abseil提供的抽象并非C++ 14或C++ 17的组成部分,但最终它们已被添加到C++标准中。例如,Google提供一个称为StringPiece的类型,随后C++ 17也添加了一个称为std::string_view的相近类型。为了与新的C++ 17类型具有一致的API,Google将StringPiece重构为absl::string_view。从底层机制上看,如果开发人员正在使用的是C++ 17,那么Abseil的string_view默认为标准实现;如果开发人员正在使用的是C++ 17以前的版本,那么string_view默认为Google的实现。
 
使用Abseil的优点在于可以访问一些目前依然尚未添加到标准中的C++特性,并且一旦这些特性被添加到C++标准中,Google保证会重构这些特性为默认使用标准实现。Google鼓励开发人员使用Abseil,并提及已有超过两亿五千万行的C++代码使用它,并且几乎所有从头开始构建的项目都使用了它。这意味着,Abseil已被Google广为使用,并出于与项目需求同步的考虑而得以频繁维护。
 
Abseil中包括如下的库:
  • base:初始化,以及其它的基础代码。 
  • algorithm:对C++的库的补充,并为原算法提供了基于容器的版本。 
  • container:提供了更多的STL类型容器。 
  • debugging:用于检查泄漏的调试库。 
  • memory:包括兼容C++ 11版本的std::make_unique()和内存管理。 
  • meta:包括兼容C++ 11版本的类型检查,在C++ 14和C++ 17版本的C++ 库中可用。 
  • numeric:兼容C++ 11的128位整数。 
  • strings:各种字符串工具。 
  • synchronization:并发原语和同步抽象。 
  • time:抽象了绝对时间点操作和时区操作。 
  • types:非容器工具的类型。 
Abseil的代码采用Apache许可,已发布在GitHub上。其Python版本的软件库将随后发布。
更多资讯>>>

未发布 MailBee.NET Objects撰写邮件教程(二):发送一个网页
by Harriet666 keys 分享 1502180555698
MailBee.NET Objects是一款为创建、发送、接收以及处理电子邮件而设计的健壮、功能丰富的.NET控件。几行代码便可为应用程序添加E-Mail支持,简单高效。具备“必需”以及独特的功能,这些控件帮助开发人员简单快速地将复杂的电子邮件功能添加到他们的应用程序中。
 
 
本文主要介绍了电子邮件如何发送网页的代码示例。目前MailBee.NET Objects在线订购享75折优惠正在进行中,欢迎您下载试用版进行运用!
使用MailBee,你可以通过电子邮件发送网页:
C#
msg.LoadBodyText("http://www.google.com", MessageBodyType.Html, Encoding.Default, ImportBodyOptions.ImportRelatedFiles |ImportBodyOptions.ImportRelatedFilesFromUris | ImportBodyOptions.PathIsUri);

VB.NET
msg.LoadBodyText("http://www.google.com", MessageBodyType.Html, Encoding.Default, ImportBodyOptions.ImportRelatedFiles |ImportBodyOptions.ImportRelatedFilesFromUris | ImportBodyOptions.PathIsUri)
 
上面的方法将网页(文本和图形)加载到邮件正文中。你可以在LoadBodyText方法文档中找到更多信息。使用ImportRelatedFilesFromUris标志,邮件正文中通过URL(URI)引用的文件将从其网站下载并附加到该邮件中。使用此标志,还将附加具有本地URI(例如“/files/picture.gif”而不是“”)的文件。如果未设置此标志,则仅导入由本地文件路径表示的文件(例如“C:\ picture.gif”或“files \ picture.gif”),而URL将保留原样。
 
换句话说,ImportRelatedFilesFromUris标志允许任何计算机上的电子邮件可见,无论是否连网,因为所有必需的文件都已经附加到电子邮件中了。但是,如果邮件的某些内容必须始终从Web服务器获取(例如,邮件包含当前天气预报动态生成的消息),则不应使用此方法。将静态图像附加到邮件中会使预报变得过时。
未发布 【FAQ合集】TWAIN扫描识别工具Dynamic Web TWAIN的特性问题
by Harriet666 keys 分享 1510112496135
Dynamic Web TWAIN中文介绍免费下载资源教程示例DEMO
 
慧都十四周年狂欢开启,Dynamic Web TWAIN终极让利7折特惠
限时一个月,马上咨询>>>
 

1. Dynamic Web TWAIN可以使用哪些操作系统?

Windows XP、Vista、7/8/10等
  • IE 6-9:ActiveX
  • IE 10-11:HTML5/ActiveX
  • Edge:HTML5
  • Chrome/Firefox 26-:NPAPI Plug-in (obsolete)
  • Chrome/Firefox 27+:HTML5
Mac OS X 10.6及更高版本
  • Chrome/Firefox 26-、Safari 6-:NPAPI Plug-in (obsolete)
  • Chrome/Firefox 27+、Safari 7+:HTML5
Ubuntu 10+,Debian 8和Fedora 19+
  • Chrome/Firefox 27+:HTML5

2. Dynamic Web TWAIN是否支持Chrome或FireFox?

支持。Dynamic Web TWAIN插件版本可与旧版NPAPI的Chrome和Firefox版本兼容。Dynamic Web TWAIN 10引入了HTML5版本,可在Windows上的Chrome和Firefox V27 +上启用TWAIN扫描。

3. Dynamic Web TWAIN是否支持数据库?

支持。Dynamic Web TWAIN能够将图像文件保存到文件系统和数据库中。

4. Dynamic Web TWAIN是否支持SSL?

支持。有关如何使用SSL的信息,请参阅该文

5.我可以使用FTP进行密码上传和下载吗?

是的,您可以使用FTPUserName属性和FTPPassword属性。

6. Dynamic Web TWAIN是否能够在类库(DLL)项目中运行?

不能。

7. Dynamic Web TWAIN是否支持条形码阅读器或OCR?

您可以使用Dynamic Web TWAIN与Dynamsoft Barcode Reader的条形码读取。
关于OCR,我们为您提供2个选项:
  1. 服务器端OCR解决方案:在线演示>
  2. 客户端OCR解决方案:在线演示>

8.我可以扫描大量的文件吗?

随着IfAllowLocalCache启用,您能够扫描数千张图片,因为额外的图像将存在磁盘上。数据将被加密并存储为“C:\Documents and Settings\{User Name}\Application Data\Dynamsoft\cache”或“C:\WINDOWS\SysWOW64 {or system32}\Dynamsoft\DynamicWebTwain\ForChrome\cache”。扫描应用程序关闭时,缓存的数据将自动从磁盘中删除。

2017慧都十四周年狂欢搞事情!砸金蛋100%抽现金红包、满额豪送iPhone X、iPhone 8、DevExpress汉化免费送、团队升级培训套包劲省10万元......更多惊喜等您来探索!

未发布 Dynamic Web TWAIN新版预告:v13.0版本中的全新设计
by Harriet666 keys 分享 1494386157218
在过去的14年中,Dynamsoft一直在努力创新和开发Dynamic Web TWAIN SDK,并在每年都有一次重大升级。今年,v13.0版本正在路上。现在让我们来看看这次新版本将带来的好处。

v13.0版本中的新设计


在v13.0版本中,SDK的结构有了新的设计。在设计新版本时,Dynamsoft主要考虑到以下目标:
  • 应该有一个核心服务作为所有模块的中心。

  • 该服务应该设计成:

              a、它很长一段时间内只需升级一次
              b、采用自动升级的方式
  • 独立模块应能够通过核心服务相互通信

  • 独立模块应能够通过核心服务共享数据

  • 使用哪些模块应由应用程序中使用的JavaScript文件决定

  • 所有模块都应自动升级,用户无需额外的操作

  • 每个模块都能够处理自身的JavaScript请求

下图显示了在v13.0版本中Dynamic Web TWAIN的新设计:

为什么会出现这个新设计?

在过去我们收到过很多投诉,例如:
  1. 只允许拥有一个版本,换句话说,你不能同时安装两个版本。
  2. 随着每次新版本的发布,客户会发现从旧版本升级到新版本的过程很困难。尽管Dynamsoft员工一直努力让这一过程尽可能的简单,但许多客户仍然觉得升级困难。关键的原因是在使用该产品时每个桌面上都需要重新安装该服务。
  3. SDK已经非常丰富了,包括不同的模块如条形码读取器、OCR模块,网络摄像头模块等。然而,SDK的旧结构使得这些模块只能以TWAIN模块为中心,导致结果是:
         a、难以独立使用模块。
         b、由于依赖TWAIN模块,因此无法单独升级一个或两个模块。

新设计的出现可以解决三个问题:
  1. 新版本可以与旧版本一起安装、实现共存。
  2. 从这个版本开始,Dynamsoft Service将成为中心。它只处理最基本和最核心的功能,并保持稳定。因此,安装之后就可以很少或无需再升级。
  3. 所有模块的安装和未来的升级将变得“安静”。换句话说,它们不再需要执行任何安装程序。相反,一旦文件在服务器上更新(新模块以及新的JavaScript文件),Service将以静默的方式下载并安装新模块。
  4. 所有模块都可以独立使用和升级了。
Dynamic Web TWAIN v13.0预计将于2017年6月发布,敬请期待!

 近期热门 - 点击最多
  1. python基于asyncio实现 Redis 的异步操作哈希数据写入 / 读取、发布订阅消息中间件
  2. Node.js 打印vite react+go项目目录树
  3. Angular入门:用Signals状态管理和Bootstrap基础样式实现的用户登录注册实例教程
  4. 用Gitea搭建免费Git服务器自定义Actions配置CI/CD自动化部署和测试流水线
  5. FastAPI+SQLModel+PostgreSQL+React+Vite全栈项目文件结构说明环境搭建与初始化指南
  6. React结合vite使用vue3,在纯typescript的react hooks中使用vue
  7. valtio基于Proxy代理比redux\zustand更简洁的react状态管理库
  8. React Native为http网络请求添加timeout超时异常处理: 用XMLHttpRequest替换fetch发送的区别
  9. React Native使用fetch发送http登陆验证请求失败:无法读取set-cookie并显示network request failed
  10. 克服Redux的缺点在React/Native中使用消息队列,pubsub-js更加简洁的组件间通信和状态传递方法

  全端社区 - 最新回复
  1. 在无管理员权限的情况下,使用安装Python补全pip临时配置环境变量;即零权限使用node.js/npm
  2. Python鉴权方法:Depends 依赖注入;装饰器;与基于Proxy模式的Session状态管理自动计算脏属性;将用户数据存储在Redis中
  3. python基于asyncio实现 Redis 的异步操作哈希数据写入 / 读取、发布订阅消息中间件
  4. Angular入门:用Signals状态管理和Bootstrap基础样式实现的用户登录注册实例教程
  5. 用Gitea搭建免费Git服务器自定义Actions配置CI/CD自动化部署和测试流水线
  6. FastAPI+SQLModel+PostgreSQL+React+Vite全栈项目文件结构说明环境搭建与初始化指南
  7. Node.js 打印vite react+go项目目录树
  8. valtio基于Proxy代理比redux\zustand更简洁的react状态管理库
  9. Windows与Mac通过git ssh和rsync实现文件共享互传
  10. Windows与Mac通过git ssh和scp实现文件共享互传

  开源的 OurJS
OurJS开源博客已经迁移到 OnceOA 平台。

  关注我们
扫一扫即可关注我们:
OnceJS

OnceOA