using Leadtools; using Leadtools.Dicom; using Leadtools.Dicom.Scu.Common; using Leadtools.Dicom.Scu; using Leadtools.MedicalViewer; using System.Net; using System.IO;
// CStore highlevel 客户端和服务端对象
private StoreScu _cstore;
private DicomScp _server = new DicomScp();private void initServer() {
_server = new DicomScp();
_server.AETitle = "L19_PACS_SCP64";
_server.PeerAddress = IPAddress.Parse("10.32.1.75");
_server.Port = 534;
_server.Timeout = 30;
}private void initCstore() {
_cstore = new StoreScu();
_cstore.AETitle = "L19_CLIENT64";
_cstore.HostPort = 1030;
//存储成功后
_cstore.AfterCStore += _cstore_AfterCStore;
}private void 存储ToolStripMenuItem_Click(object sender, EventArgs e)
{
string filename ="D:\\Xa.dcm";
_cstore.Store(_server, filename);
}AutoVue 3D Professional Advanced 提供了对领先的中型 3D CAD 包和主流的 2D CAD 软件的查看和标注的功能。 | |
AutoVue Electro-Mechanical Professional 一款连接EDA和MCAD的文档信息处理控件 | |
一个多用途,多功能的图文浏览,标注,协同作业的应用软件 | |
可以用来浏览、注释、链接以及打印各种文件格式的文件。 | |
AutoVue 2D 可原生查看文档,这就避免了最终用户使用原始程序,或转换文档到中间格式的麻烦。 |

微软于4月19日在中国北京首次发布全新的安卓手机端Office Mobile应用。微软此次将 Word、Excel、PowerPoint三者完美合一,为中国的消费者带来完整的移动办公体验。
微软大中华区副总裁兼市场营销及运营总经理康容表示:“微软一直倾听用户的声音,最大化满足 Office 用户的需求。我们十分欣喜地宣布,此次微软中国将携手行业领先的合作伙伴——华为,小米,腾讯和百度在中国联合首发全新安卓手机端 Office Mobile 应用,为移动办公带来更便捷的创新体验。”
全新安卓手机端 Office Mobile 应用以更小的存储空间,为用户带来包括 Word、Excel、PowerPoint 的一站式完整办公体验。同时,它还具有 Office 熟悉的外观和品质,以及专为中国用户设计的本地化创新功能,进一步为用户带来更多便利。
全新安卓手机端 Office Mobile 应用将以“三合一”模式全面集成 Word、 Excel、PowerPoint 三个独立应用中所有功能,用户可随时随时地访问、查看和编辑 Word、Excel 和 PowerPoint 文档。这款全新安卓手机端 Office Mobile 应用体积更轻盈,不仅减少了应用程序对手机内存的占用,而且简化了用户在不同办公软件之间的切换操作。以更小的存储空间,为用户带来完整的办公体验。

(全新安卓手机端 Office Mobile 应用将 Word、Excel、PowerPoint 三者完美合一)
全新安卓手机端 Office Mobile 应用为用户带来熟悉的跨设备办公体验。当用户使用不同设备对文档进行浏览、快速编辑或添加注释时,所有文档的格式和内容都会与原始文档保持一致。Word 界面整洁美观,文字、图片、页眉、页脚和图表都保持原有格式;无论是幻灯片中的动画、SmartArt 图形和形状,还是 Excel 中的图表和数据,都能够高保真呈现,完美兼容。此外,用户还可以在全新安卓手机端 Office Mobile 应用中浏览 PDF 格式文件,将文档转存为 PDF 格式并进行分享。

(支持图表、动画、SmartArt 图形和形状等功能)
微软Office一直重视中国用户的声音,通过本地化功能创新,为中国用户带来更好的移动办公体验。全新安卓手机端 Office Mobile 应用支持多种分享形式。除了以链接形式邀请他人编辑或查看文档,还可作为附件一键共享到邮件以及微信、QQ 等社交软件,更好地迎合中国用户的使用习惯。

(融合本地化创新功能,支持文件分享到微信、QQ 等社交软件)
从今天开始,中国安卓手机用户就可以通过华为应用市场、小米应用商店、腾讯应用宝和百度手机助手下载并体验全新安卓手机端Office Mobile应用了。同时,也可以通过微软官网下载安装全新安卓端 Office Mobile 应用。
转自(Microsoft)

















<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>