未找到

未发布 HTML5文档查看器PrizmDoc v12.2发布,为Viewing客户端添加了新功能。
by Harriet666 keys 分享 1489721400738

PrizmDoc v12.2最新版点击下载>>>

PrizmDoc是最快速、最有品质的HTML5文档查看器,提供安全的、全定制化的查看和协作功能。它通过一个简单部署的机制减少成本,降低安全风险和提高生产率。同时,它是基于服务器的查看器,消除了不必要的许可和下载。

PrizmDoc发布v12.2新版本,为Viewing客户端和PrizmDoc服务器添加了新功能。

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

未发布 图形图表设计软件Edraw Max更新至v9.0,新增10000+符号和模板丨限时8.5折
by Harriet666 keys 分享 1510734839751
Edraw Max(亿图图示)是一款综合图形图表制作软件,它包含丰富的实例和模版,帮助您轻松创建流程图、网络拓扑图、组织结构图、商业图表、工程图,思维导图、软件设计图和平面布局图等。亿图采用更智能和人性化的绘制方式,包括丰富的图形模板库和特色实例库,最大程度帮助设计者降低工作量,更快捷阐述设计思想,提升创作灵感。
 
Edraw Max(亿图图示)中文版v9.0下载>>>
 
v9.0更新内容:
  • 新增超过10000个新的符号和模板。
  • 新增平面设计图纸类型。
  • 新增图形组织者的绘图类型。
  • 新增企业架构图的绘图类型。
  • 修复Mind Map中无效的Enter键。
  • 改进文字输入模式。

  • EdrawSoft85

未发布 CAD绘图控件VectorDraw web library (javascript) v7.7010.1.0发布丨附下载
by Harriet666 keys 分享 1489478455256

VectorDraw web library (javascript)是一个矢量图形库,它不仅能打开CAD图纸,而且能显示任何支持HTML5标准平台上的通用矢量对象,如Windows,安卓,iOS和Linux。无需任何安装,VectorDraw web library (javascript)就可以运行在任何支持canvas标签和Javascript的主流浏览器(Chrome, Firefox, Safari, Opera, Dolphin, Boat等等)中。这意味着可以用DXF,DWG,DGN,VDML等多种格式在任何台式、平板电脑,智能手机和便携式笔记本上展现出你的业务。

VectorDraw web组件是一个革新性项目,其功能和性能得到了快速的提升。这意味着 VectorDraw web library 一直在加入新的功能和发展潜力。

【最新VectorDraw web library (javascript) v7.7010.1.0点击下载】

未发布 .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编写跨平台代码了,在此之前,这是不可能完成的。
未发布 3D造型引擎3D ACIS Modeling 发布2018.1.0版本
by Harriet666 keys 分享 1511947459181
3D ACIS® Modeler (ACIS) 是 Spatial 久负盛名的 3D 造型引擎,为超过 350 种客户应用程序所采用,全球应用量超过 150 万套。ACIS 采用面向对象的开放 C++ 架构,拥有强大的 3D 造型能力。ACIS 集成了线框、曲面和实体造型的功能,支持流形和非流形拓扑,具备非常丰富的几何运算集,因此非常适用于构建具有混合造型功能的 3D 应用程序。
 
ACIS不仅具备非常完善的 3D 造型功能,而且灵活性强,可满足各种应用程序要求。此外,3D Modeling 的 ACIS 扩展功能还能满足特定的应用需求,其中包括隐藏线去除、可变形造型、高级遮盖和特征去除。
 
3D ACIS Modeler 2018.1.0更新内容:
通过先进的测试方法,Spatial在此版本中继续专注于稳定性和可靠性。我们还在模型稳定性方面做了一些改进:
  • 新的Boolean方法改进了200多个案例。
  • 高级Remove Faces算法解决了几种新的几何排列类型。

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

未发布 微软:Visual Studio 2017是迄今为止最高效的版本
by Harriet666 keys 分享 1489998441630
Visual Studio 2017 全面上市。欢迎大家即刻下载体验全新的 Visual Studio 2017!我们还为整个 Visual Studio 产品系列进行了更新,让 Visual Studio 订阅用户和 Visual Studio Dev Essentials 的会员收获更多价值。

Visual Studio 2017:迄今为止最高效的版本

我们针对 Visual Studio 2017 的多个关键领域进行了重点研发——包括改进基础部件、提供五星级的云和移动开发体验,以及提升 DevOps 功能,以确保 Visual Studio 2017 可以助力每一位开发者在各种平台上开发各类应用。

在发展 Visual Studio 2017 这一全新版本时,我们将云和移动开发置于最重要的位置。为了简化云开发流程,内置的各项工具将为您提供有关.NET Core、Azure 应用、微服务、容器等应用开发的完整集成功能,甚至现在可以更轻松地由 IDE 直接开发和部署 Azure 应用和服务。Visual Studio 2017 with Xamarin 让你能够通过先进的调试和分析工具更加快速地为安卓、iOS 和 Windows 平台开发移动应用。

我们也重视聆听用户心声,并清楚地了解到用户希望 Visual Studio 变得更为快速、更精简,即使所面对的应用开发和项目愈加庞大。因此,我们将为用户提供全新的安装体验,让一切变得轻便而模块化。为提高 Visual Studio 的性能,我们还增强了多项功能。Visual Studio 2017 还将交付多项全新特性,帮助开发团队能够轻松地实践现代化的 DevOps 做法,更为快速而持续地应对市场变化。为了帮助开发者更好地把自己的数据库嵌入 DevOps,加速发布周期,Redgate Data Tools 工具现已加入 Visual Studio Enterprise 2017 服务当中。

未发布 VCL图表控件包TMS Grid Pack v6.7.2.2发布丨附下载
by Harriet666 keys 分享 1507541171337
TMS Grid Pack是一款功能齐全的VCL图表控件包,包含TAdvStringGrid、TAdvColumnGrid、TAdvSpreadGrid、TAdvGridExcelIO、TAdvGridRTFIO、TAdvGridPDFIO和TDBAdvGrid多个控件于一体,能帮助用户节省大量的开发时间和费用。

TMS Grid Pack最新版点击下载>>>
 
v6.7.2.2

改进:
  • TDBAdvGrid中支持没有内置书签的数据集
修复:
  • TAdvStringGrid中当grid.FixedRows <> 1时选择所有调用
 
v6.7.2.1

改进:
  • TAdvColumnGrid中窗体构造函数中的样式更新
  • TAdvStringGrid中对嵌入单元格中的进度条进行高DPI处理
修复:
  • 分组的TDBAdvGrid中通过列行访问单元格的问题
  • TAdvStringGrid中edEditBtn在线编辑器按钮点击和隐藏选项的问题
  • TAdvGridPDFIO中单行网格的问题
  • TAdvStringGrid中鼠标滚轮的问题
  • TAdvStringGrid中单列网格索引排序的问题
  • TDBAdvGrid中的剪贴板复制的问题

【慧都十四周年庆预热开启!全场满额送七级豪礼,AppleMac笔记本电脑、iwatch、iPad等您来拿!】

活动时间:10月1日-10月30日

未发布 MailBee.NET Objects接收电子邮件(POP3)教程二:接收和显示HTML电子邮件
by Harriet666 keys 分享 1497950218025
MailBee.NET Objects是一款为创建、发送、接收以及处理电子邮件而设计的健壮、功能丰富的.NET控件。几行代码便可为应用程序添加E-Mail支持,简单高效。具备“必需”以及独特的功能,这些控件帮助开发人员简单快速地将复杂的电子邮件功能添加到他们的应用程序中。
 
MailBee.NET Objects介绍和试用点击查看>>>
 
本文主要介绍了接收和显示HTML电子邮件(POP3)的代码示例。目前MailBee.NET Objects在线订购享75折优惠正在进行中,欢迎您下载试用版进行运用!

从POP3服务器下载整个邮件后,如上一个教程所示,开发人员可以管理可用的邮件主体。例如,当邮件没有HTML格式的主体时,开发人员可以配
置邮件解析器以从纯文本正文中创建HTML格式的主体:
C#:
msg.Parser.PlainToHtmlMode = PlainToHtmlAutoConvert.IfNoHtml;
VB.NET:
msg.Parser.PlainToHtmlMode = PlainToHtmlAutoConvert.IfNoHtml
 
此外,开发人员可以指定影响邮件解析方式的选项。例如,下面的代码指定了当纯文本正文被自动转换为HTML格式的主体时,包含在邮件纯文本
主体中的所有URI都应该被更改为相应的链接:
C#:
msg.Parser.PlainToHtmlOptions = PlainToHtmlConvertOptions.UriToLink;
VB.NET:
msg.Parser.PlainToHtmlOptions = PlainToHtmlConvertOptions.UriToLink
 
由于邮件解析器已配置,开发人员应调用Apply方法应用更改:
C#:
msg.Parser.Apply();
VB.NET:
msg.Parser.Apply()
 
解析的邮件的HTML主体内容可以使用Web浏览器控件轻松显示,如下所示:
C#:
webBrowser1.DocumentText = msg.BodyHtmlText;
VB.NET:
webBrowser1.DocumentText = msg.BodyHtmlText
 
请注意,WebBrowser控件仅在Visual Studio 2005和更高版本中可用。因此,上述代码将不会在早期版本的Visual Studio.NET中运行。
 
示例代码:
以下示例从指定邮箱中下载最后一条消息,从纯文本正文中生成HTML邮件主体,并显示此消息的HTML主体。
在使用MailBee.NET Objects之前,请确保它已解锁。
请将对MailBee.NET.dll的引用添加到应用程序中,然后在代码顶部添加以下行以允许在应用程序中使用MailBee.NET Objects:
C#:
using System;
using MailBee;
using MailBee.Pop3Mail;
VB.NET:
Imports System
Imports MailBee
Imports MailBee.Pop3Mail
 
然后在Visual Studio 2005中创建一个新表单,并将Button和WebBrowser控件放在此表单上。设置以下代码在按钮点击事件上运行:
C#:
Pop3 pop = new Pop3();
                        
try
{
        pop.Connect("mail.domain.com");
        pop.Login("login", "password");
        Console.WriteLine("Successfully logged in.");
}
catch(MailBeePop3LoginNegativeResponseException e)
{
        Console.WriteLine("POP3 server replied with a negative response at login.");
}
MailMessage msg = pop.DownloadEntireMessage(pop.InboxMessageCount);
msg.Parser.PlainToHtmlMode = PlainToHtmlAutoConvert.IfNoHtml;
msg.Parser.PlainToHtmlOptions = PlainToHtmlConvertOptions.UriToLink;
msg.Parser.Apply();
                        
WebBrowser1.Text = msg.BodyHtmlText;
try
{
        pop.Disconnect();
        Console.WriteLine("Disconnected successfully.");
}
catch
{
        Console.WriteLine("Disconnection failed.");
}
VB.NET:
Dim pop As Pop3 =  New Pop3() 
 
Try
        pop.Connect("mail.domain.com")
        pop.Login("login", "password")
        Console.WriteLine("Successfully logged in.")
Catch e As MailBeePop3LoginNegativeResponseException
        Console.WriteLine("POP3 server replied with a negative response at login.")
End Try
 
Dim msg As MailMessage =  pop.DownloadEntireMessage(pop.InboxMessageCount) 
 
msg.Parser.PlainToHtmlMode = PlainToHtmlAutoConvert.IfNoHtml
msg.Parser.PlainToHtmlOptions = PlainToHtmlConvertOptions.UriToLink
 
msg.Parser.Apply()
 
WebBrowser1.Text = msg.BodyHtmlText
 
Try
        pop.Disconnect()
        Console.WriteLine("Disconnected successfully.")
Catch
        Console.WriteLine("Disconnection failed.")
End Try
 
以上就是本次教程的全部内容,接下来会有更多相关教程,敬请关注!您也可以在评论者留下你的经验和建议。

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

未发布 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临时配置环境变量
  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