未找到

未发布 Edraw Office Viewer component教程(二):将Excel嵌入VB 6并使之自动化
by Harriet666 keys 分享 1494475186338
Edraw office viewer component对于开发人员来说是一个将Microsoft Excel电子表格嵌入到vb.net应用程序中的简单可靠的解决方案。
 
使用Edraw office viewer component,vb开发人员可以轻松地将一个现有的Excel电子表格嵌入到表单中,然后进行自动化。在加载表单时,开发人员可以使用Open方法从硬盘驱动器或服务器中加载* .xls、* .xlsx、* .xslm或* .cvs文件,并在窗口的某个区域中打开。Excel文件可以是只读、完全编辑或禁止保存等状态。开发人员还可以使用excel组件轻松实现excel自动化。
 
本文将演示如何逐步将Excel嵌入到VB中。如果你没有officeviewer.ocx文件,请先安装。

Office viewer component - 支持Word、Excel、PowerPoint、Visio和Project的vb6、vb.net项目

在VB 6中嵌入Excel组件

启动Visual Basic并创建一个新的标准项目。默认情况下创建Form1。
在“工具箱”面板中,右键单击空白区域。然后单击Component...
 
在弹出的对话框中,查看Edraw Office Viewer Component。
 
单击确定按钮。
Office Viewer Component便已添加到“工具栏”窗口中。

切换到VB 6窗口,然后添加组件。

该组件包括许多自定义Excel窗口的方法、事件和属性。
开发人员可以使用以下代码在Form_Load事件中打开一个excel文件。
Private Sub Form_Load()
EDOffice1.OpenFileDialog'EDOffice1.OpenWord 
“d:\ test.xlsx” 
'EDOffice1.Open“d:\ test.xls”,“Excel.Application” 
End Sub

为了保护Excel工作表不被最终用户修改,开发人员需要在DocumentOpened事件中添加以下代码。
Private Sub EDOffice_DocumentOpened()
EDOffice1.ProtectDoc 1'XlProtectTypeNormal 
End Sub
 
一些包含excel自动化的方法可用于创建或修改Excel数据。
bool ExcelAddWorkSheet(long Index); 
bool ExcelDeleteWorkSheet(long Index); 
bool ExcelActivateWorkSheet(long Index); 
长ExcelGetWorkSheetCount(); 
bool ExcelSetCellValue(long Column,long Row,BSTR Value); 
BSTR ExcelGetCellValue(长列,长行); 
bool ExcelSetRowHeight(long Row,double Height); 
bool ExcelSetColumnWidth(long Column,double Width); 
afx_msg bool ExcelDeleteRow(long Row); 
bool ExcelDeleteColumn(long Column); 
bool ExcelInsertRow(long Row); 
bool ExcelInsertColumn(long Column); 
bool ExcelInsertPageBreakInRow(long Row); 
bool ExcelInsertPageBreakInColumn(long Column); 
bool ExcelCopyToClipboard(); 
bool ExcelPasteStringToWorksheet(BSTR bstText);

 

使用Visual Basic自动化操作Excel

单击项目,然后单击引用。将显示“引用”对话框。向下滚动列表,找到Microsoft Excel object库(Microsoft Excel xx.x Object库),然后选择引用Excel。如果列表中没有正确的Excel Object库,请确认你是否安装了合适的Excel版本。
单击“确定”关闭“引用”对话框。
将CommandButton添加到Form1。
在Form1的代码窗口中,插入以下代码:
Private Sub Command1_Click()
 
Dim oXL As Excel.Application
Set oXL = EDOffice1.GetApplication()
Dim oWB As Excel.Workbook
Set oWB = EDOffice1.ActiveDocument()
Dim oSheet As Excel.Worksheet
Dim oRng As Excel.Range
Set oSheet = oWB.ActiveSheet
oSheet.Cells(1, 1).Value = "First Name"
oSheet.Cells(1, 2).Value = "Last Name"
oSheet.Cells(1, 3).Value = "Full Name"
oSheet.Cells(1, 4).Value = "Salary"
' Format A1:D1 as bold, vertical alignment = center.
With oSheet.Range("A1", "D1")
.Font.Bold = True
.VerticalAlignment = xlVAlignCenter
End With
' Create an array to set multiple values at once.
Dim saNames(5, 2) As String
saNames(0, 0) = "John"
saNames(0, 1) = "Smith"
saNames(1, 0) = "Tom"
saNames(1, 1) = "Brown"
saNames(2, 0) = "Sue"
saNames(2, 1) = "Thomas"
saNames(3, 0) = "Jane"
saNames(3, 1) = "Jones"
saNames(4, 0) = "Adam"
saNames(4, 1) = "Johnson"
' Fill A2:B6 with an array of values (First and Last Names).
oSheet.Range("A2", "B6").Value = saNames
' Fill C2:C6 with a relative formula (=A2 & " " & B2).
Set oRng = oSheet.Range("C2", "C6")
oRng.Formula = "=A2 & "" "" & B2"
' Fill D2:D6 with a formula(=RAND()*100000) and apply format.
Set oRng = oSheet.Range("D2", "D6")
oRng.Formula = "=RAND()*100000"
oRng.NumberFormat = "$0.00"
' AutoFit columns A:D.
Set oRng = oSheet.Range("A1", "D1")
oRng.EntireColumn.AutoFit
oXL.UserControl = True
End Sub
 
按F5运行项目。Excel将自动填充excel单元格。
自动化Excel时要注意的一点是Excel Macro Recorder。它仍然在Word 2007中,但隐藏在开发者功能区栏。
 
以上就是本次教程的全部内容,接下来会有更多相关教程,敬请关注!您也可以在评论者留下你的经验和建议。
未发布 AutoVue 21.0.1新版本特性:支持在没有Applets的浏览器中运行
by Harriet666 keys 分享 1490257298040

21.0.1版本的AutoVue中的一大特色就是可以在没有Applet的浏览器中支持AutoVue。Chrome前一段时间删除了对Applet的支持。Firefox也即将推出。所以这是一个非常重要的功能,允许人们继续使用AutoVue作为Web环境的一部分。

【AutoVue系列产品包含:AutoVue 3D Professional AdvancedAutoVue Electro-Mechanical ProfessionalAutoVue EDAAutoVue OfficeAutoVue 2D Professional

AutoVue 21.0.1增加了对Java Web Start Framework的支持,这允许浏览器轻松运行java应用程序。使用此框架,AutoVue客户端可以作为浏览器之外的单独的应用程序运行,这提供了更高的安全性,并且可以在没有Applet支持的浏览器中使用。

对于用户来说,体验将与以前版本的AutoVue非常相似,你可以在浏览器中单击文档或模型,AutoVue客户端将启动并显示相应的文档或客户端。  

未发布 GLG工具包Visualization and HMI Toolkit更新至v3.6,支持Java Script
by Harriet666 keys 分享 1490344507662

Visualization and HMI Toolkit的为开发高级图形的动态界面而设计的艺术化的框架:它不仅仅是简单的按键与菜单,它是全动态的能显示动态数据以及能反映用户互动的图片对象。它不仅仅是能制作“漂亮图片”绘制工具(它还具有很多其他功能),而是能使开发人员定义图片对象以及与程序中的对象互动的图形引擎。它的使用对象主要针对应用程序开发人员,能将乏味的低级别图片代码编译工作转化成高级的互动设计行为。

GLG工具包Visualization and HMI Toolkit更新至v3.6,点击下载>>>

支持Java Script:

对Java Script的增加的支持使得用户可以定义自定义函数,将多个输入值转换为驱动动画的输出值。通过可以添加到对象属性的新Java Script转换来使用Java Script。例如,一个新的“LED Value Display”部件可以通过使用Java Script转换来实现部件的逻辑。

转换的Java Script属性包含用于生成输出值的Java Script代码。转换的Arg List属性通过$ N符号提供脚本中使用的可变的参数,其中N是基于1的参数索引(即 $ 1是第一个参数)。参数可以是双(D)、字符串(S)或XYZ(G)类型。Java Script转换的输出值也可以是D、S或G类型,与其所附属性的类型相匹配。

例如,可以使用以下Java Script将D属性的值设置成以度为单位的第一个参数的sin函数:Math.sin ($ 1 / 180. * Math.PI)

下面的Java Script可用于根据第一个参数的值和由第二个、第三个参数定义的阈值来在“NORMAL” 和“ALARM”之间切换的文本字符串:$ 1 <$ 2 || $ 1> $ 3?“ALARM”:“NORMAL”

对于复杂的Java Script来说,可以通过Java Script文件提供Java Script函数和方法库。加载此文件时,可以在图形中使用该文件中定义的Java Script函数。

应用程序可以使用包含Java Script方法集合的全局Java脚本文件并在应用程序的图纸中使用。该文件将被预加载并用作Java Script库。Viewport的JavaScriptFile属性也可定义为该viewport预加载的Java Script文件。所有加载的Java脚本都是全局的,可以在应用程序的任何位置访问。从Java Script文件加载的函数将覆盖任何以前具有相同名称的Java Script函数。

GLGeditors和所有GLG API都支持Java Script:C / C ++、Java、C#和Windows上的ActiveX。C / C ++和ActiveX中的Java Script支持由Duktape JavaScript Engine提供,对于C#来说可以使用Jurassic JavaScript引擎(由Jurassic.dll提供)。在Java中可以使用Java的JavaScript引擎。

所有Java Scripts都在绘图设置时先行编译,以实现更快的运行。这些脚本也可以进行缓存。

GlgJavaScriptFile全局配置资源或GLG_JAVA_SCRIPT_FILE环境变量可用于指定全局Java Script文件。 对于GLG Builder和GLG HMI配置器,还可以通过-glg-java-script-file命令行选项或GLG配置文件中的GlgJavaScriptFile资源(即glg_config或glg_hmi_config)提供全局Java Script文件。

本文作者慧都Elyn,转载注明出处

未发布 【示例教程】使用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

未发布 集成的HTTP嗅探器HttpWatch更新至v11.0.21,改进F5刷新机制
by Harriet666 keys 分享 1509957982193
 HttpWatch是一款集成的HTTP嗅探器,为IE和Firefox提供新的方法以查看您网站的负载和运行情况。你可以直接在浏览器中调试由web页面生成的网络流量,而无需切换到一个单独的工具。

【HttpWatch v11.0.21免费下载>>>】


HttpWatch v11.0.21更新内容

  • 改进:使用HttpWatch扩展窗口中的F5和Ctrl+F5快捷键现在会刷新或强制刷新正在记录的Chrome选项卡
  • 改进:为“协议”列中的值添加了数据提示
  • 改进:Windows 10的扩展版本信息现在显示在“属性”窗格中
  • 修复:重复的评论项目被错误地添加到HAR文件中

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

未发布 VMProtect用户手册:专用术语
by Harriet666 keys 分享 1521622426288
VMProtect是一款虚拟机保护软件,是目前最为流行的保护壳之一。VMProtect将保护后的代码放到虚拟机中运行,这将使分析反编译后的代码和破解变得极为困难。除了代码保护,VMProtect还可以生成和验证序列号,设置过期时间,限制免费更新等等。

VMProtect最新试用版下载>>>


 
如果您不知道相应主题的专用术语,则无法有效使用该工具。本篇教程解释了VMProtect中使用的术语。一些术语可能会提供与传统术语不同的含义。
 
字节码 - 将实际处理器的命令转码为虚拟机命令后收到的代码。
 
虚拟化 - 一种将应用程序的部分可执行代码转换为具有命令系统,体系结构和操作逻辑的虚拟机命令的过程,这些命令对潜在的黑客来说是未知的。代码的虚拟化片段由虚拟机的解释器执行,而不将其转换为物理处理器的机器语言代码。通常,虚拟化片段的反向工程归结为建立一个具有与虚拟机模拟的处理器相同架构的反汇编程序,并分析由此产生的反汇编代码。
 
虚拟机 - 在受保护的应用程序中直接执行字节码的程序代码。
 
水印 - 每个字节的用户数组都有一个唯一的标识,可以明确标识该程序被黑客复制的合法所有者。
 
突变 - 用一个模拟或一组命令代替一个原始命令产生相同的结果。
 
混淆技术 - 一组旨在使程序代码分析复杂化的方法和技术。根据编程语言写入受保护程序,使用不同的混淆类型。写在解释语言(的Perl,PHP等)的应用程序混淆通过修改源代码所做的:评论被删除,变量给出了毫无意义的名称,字符串常量被加密等等。通过转换由虚拟机处理的字节码来执行Java / .NET应用程序的混淆。编译程序的混淆依赖于修改机器语言代码:混淆器添加各种“垃圾”命令,“死代码”,随机跳转。另外,原始命令会发生变化,部分操作会移至堆栈,并进行了一些结构(或不太常数学的)转换。对混淆的代码片段进行反向工程会尝试将片段恢复到其原始状态,只要正确完成混淆处理,这是一项耗时的任务。
 
保护器 - 旨在保护其他程序免遭黑客攻击的软件。现在的大多数保护器都不会修改应用程序的源代码,而是打包或加密应用程序。主要重点放在保护解包/解密程序或程序上。
 
入口点 - 加载到内存中的应用程序的初始地址执行从开始。
 
压缩 - 通过使用非典型算法压缩程序和/或库的可执行文件来保护程序代码的一种方法。受保护的代码片段由封装器压缩,并在应用程序执行时在用户端完全或部分解压缩。
 
加密 - 通过强大的加密算法来保护应用程序代码的一部分。受加密保护的软件要求最终用户输入激活码,以消除开发者为未注册版本的程序设置的限制。

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

未发布 .NET Core 2将Visual Basic带到了Linux和macOS平台
by Harriet666 keys 分享 1504087156993
Microsoft已经愈加接近将Visual Basic划为.NET Core平台上的一等公民。作为.NET Core 2发行版的一部分,VB开发者现在可以编写针对.NET Standard 2.0的控制台应用程序和类库,并且可以兼容多个平台。这就意味着运行在Windows上的可执行文件或者类库也能够运行在macOS和Linux上。

一旦安装了.NET Core 2 SDK,你就可以开始创建VB项目了。由于这是.NET Core平台,Visual Studio有助于编码,但是它并不是必需的。.NET Core 2.0中有四个VB模板:
  • 控制台应用程序:Hello World程序样例 
  • 类库 
  • 单元测试工程 
  • xUnit单元测试工程 

在命令提示行中,你可以执行:
dotnet –version
来确认你使用的是.NET Core 2.0版本或者是更高的版本。然后你需要创建一个新目录来保存你的工程,并且运行dotnet new来根据其中一个模板创建一个新工程。之后,执行dotnet run来运行这个工程:
mkdir vbcore
cd vbcore
dotnet new console -lang VB
dotnet run
但是这并不意味着Microsoft的工作都已经全部完成,因为目前还有剩余任务要做,例如,让.NET Core平台上的VB开发者拥有使用ASP .NET Core的能力。Microsofs 的Immo Landwerth说,针对于此的模版尚在进行中,这个版本尚不可用。尽管如此,VB开发者现在可以针对macOS和Linux编写跨平台代码了,在此之前,这是不可能完成的。
未发布 ByteScout旗下产品更新合集丨附下载
by Harriet666 keys 分享 1490853095097
ByteScout
Bytescout公司主要为家庭和商业用户提供软件产品及为软件开发商(AactiveX和.NET SDK)提供开发工具。产品主要包含条形码、文档管理、音频视频以及文件格式转换等类型。

BarCode Reader SDK
一款支持多种图像格式、线型条码和二维条码的条码读取器开发包。
更新详情:BarCode Reader SDK 更新至v8.90.0.1651>>>
点击下载:最新版BarCode Reader SDK >>>

Bytescout PDF To HTML SDK
用于PDF转换HTML,并且不需要任何第三方软件支持。
更新详情:Bytescout PDF To HTML SDK更新至v8.3.0.2794>>>
点击下载:最新版Bytescout PDF To HTML SDK>>>

Spreadsheet SDK
无需MS Excel而只使用本地的.NET库来写、读、修改、计算电子表格的电子表格控件。
更新详情:Spreadsheet SDK更新至v2.8.1.1601>>>
点击下载:最新版Spreadsheet SDK>>>
BarCode Generator SDK
在Visual Basic 6、.NET WinForm和ASP.NET应用中生成和显示1D(线性)和2D条形码。

更新详情:BarCode Generator SDK更新至v4.57.0.925>>>
点击下载:最新版BarCode Generator SDK>>>
SWF To Video and Images SDK
一款可以将SWF与Flash电影转换为WMV/AVI视频的多功能工具包。

更新详情:SWF To Video and Images SDK更新至v2.13.1038>>>
点击下载:最新版SWF To Video and Images SDK>>>
Image To Video SDK
将图片转换为WMV、AVI视频并进行幻灯片播放,你还可以自定义设置2D、3D滚动效果。

更新详情:Image To Video SDK更新至v2.12.1038>>>
点击下载:最新版Image To Video SDK>>>
Screen Capturing SDK
一款具有屏幕录制功能的控件,你可以用它录制高质量的视频、音频。

更新详情:Screen Capturing SDK更新至v2.54.1044>>>
点击下载:最新版Screen Capturing SDK>>>
PDF Extractor SDK
一款可以转换PDF为txt、CSV、XML,从PDF文件中提取图像和信息的多功能工具包。

更新详情:PDF Extractor SDK更新至v8.3.0.2792>>>
点击下载:最新版PDF Extractor SDK>>>
未发布 【教程】Edraw Max(亿图图示):怎么用图片创建自己的符号库?
by Harriet666 keys 分享 1500972809000
Edraw Max(亿图图示)除了自带丰富的模板和例子,还有一个非常庞大的符号库,内置符号已经超过20000个。如果这些符号还是不能满足你的需求,那么你还可以通过软件“从图片创建库”的功能,创建一个属于你自己的符号库。本文就详细介绍一下具体是如何操作的!
 
目前Edraw Max(亿图图示)在线订购享75折优惠活动正在进行中,欢迎您下载、购买进行运用!
 
Edraw Max(亿图图示)v8.7最新版下载地址>>>
 
第一步:新建一个绘图页面,选择“符号”菜单下的“从图片创建库”。
 
第二步:在弹出的窗口中,选择你要作为库元素图片的文件夹,然后点击“选择文件夹”按钮即可。
 
第三步:左侧符号库就会显示出新添加的“图片”库。鼠标右键点击如下图所示位置,可对符号库重新命名。
 
第四步:选中具体的某一个图形、符号,然后右键选择“编辑符号”,即可对该符号进行再次编辑。

温馨提示:
1、建议“名称“和”提示”命名保持一致,否则符号显示的名称,和鼠标放在符号上显示的名称会不一样。
2、若“选择图元文件”的文件修改变动较大,“请选择形状图标”的文件也应做出相应的修改,否则,该符号在符号库中的显示,会和实际使用时的图会有出入。
 
第五步:导入新的图形到该符号库,从该符号库中导出图形,或者删除不需要用的图形符号,都可以通过点击鼠标右键进行设置。

未发布 .Net文档图像处理工具包GdPicture.NET发布v14.0.27,提升GdViewer控件的速度
by Harriet666 keys 分享 1512379817192
GdPicture.NET是一款功能全面且可无限分发的文档图像处理工具包,开发者可将其作为.NET组件运用在他们的C#, VB.NET和CodeGear应用程序中,从而实现文档生成,显示,获取,编辑和打印等功能。
 
在您的程序中使用GdPicture.NET,可实现文档显示,获取TWAIN扫描图像,进行图像处理,执行光学字符识别操作,其涵盖了所有主流领域的其他文件成像技术。
 
GdPicture.NET v14最新版下载>>>
 
GdPicture.NETv14.0.27更新内容:
  • 修复了OCR无法识别大图像文件的问题。
  • 提升了GdViewer控件(WPF版本)注释绘图和渲染的速度。
  • 1D条码引擎:提高准确性。
  • 1D条码引擎:提高速度。
  • 1D条码编写:修复了一些字符不能正确编码的问题。
  • PDF417条码编写:修复崩溃的问题。
  • DocuVieware:新的JavaScript函数GetCurrentSearchOccurrenceIdx()。
  • 其他小的修复。


 近期热门 - 点击最多
  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基于asyncio实现 Redis 的异步操作哈希数据写入 / 读取、发布订阅消息中间件
  2. Angular入门:用Signals状态管理和Bootstrap基础样式实现的用户登录注册实例教程
  3. 用Gitea搭建免费Git服务器自定义Actions配置CI/CD自动化部署和测试流水线
  4. FastAPI+SQLModel+PostgreSQL+React+Vite全栈项目文件结构说明环境搭建与初始化指南
  5. Node.js 打印vite react+go项目目录树
  6. valtio基于Proxy代理比redux\zustand更简洁的react状态管理库
  7. Windows与Mac通过git ssh和rsync实现文件共享互传
  8. Windows与Mac通过git ssh和scp实现文件共享互传
  9. React结合vite使用vue3,在纯typescript的react hooks中使用vue
  10. 使用PubSub-JS时ReactNative在后台运行一段时间唤醒后,组件无法scribe到publish的事件,typescript实现一个事件订阅发布组件

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

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

OnceOA