92 lines
2.8 KiB
JavaScript
92 lines
2.8 KiB
JavaScript
|
var contentImport = {};
|
|||
|
var g = $G;
|
|||
|
|
|||
|
contentImport.data = {
|
|||
|
result: null,
|
|||
|
};
|
|||
|
contentImport.init = function (opt, callbacks) {
|
|||
|
addUploadButtonListener();
|
|||
|
addOkListener();
|
|||
|
};
|
|||
|
|
|||
|
function processWord(file) {
|
|||
|
$('.file-tip').html('正在转换Word文件,请稍后...');
|
|||
|
$('.file-result').html('').hide();
|
|||
|
var reader = new FileReader();
|
|||
|
reader.onload = function (loadEvent) {
|
|||
|
mammoth.convertToHtml({
|
|||
|
arrayBuffer: loadEvent.target.result
|
|||
|
})
|
|||
|
.then(function displayResult(result) {
|
|||
|
$('.file-tip').html('转换成功');
|
|||
|
contentImport.data.result = result.value;
|
|||
|
$('.file-result').html(result.value).show();
|
|||
|
}, function (error) {
|
|||
|
$('.file-tip').html('Word文件转换失败:' + error);
|
|||
|
});
|
|||
|
};
|
|||
|
reader.onerror = function (loadEvent) {
|
|||
|
$('.file-tip').html('Word文件转换失败:' + loadEvent);
|
|||
|
};
|
|||
|
reader.readAsArrayBuffer(file);
|
|||
|
}
|
|||
|
|
|||
|
function processMarkdown( markdown ){
|
|||
|
var converter = new showdown.Converter();
|
|||
|
var html = converter.makeHtml(markdown);
|
|||
|
$('.file-tip').html('转换成功');
|
|||
|
contentImport.data.result = html;
|
|||
|
$('.file-result').html(html).show();
|
|||
|
}
|
|||
|
|
|||
|
function processMarkdownFile(file) {
|
|||
|
$('.file-tip').html('正在转换Markdown文件,请稍后...');
|
|||
|
$('.file-result').html('').hide();
|
|||
|
var reader = new FileReader();
|
|||
|
reader.onload = function (loadEvent) {
|
|||
|
processMarkdown( loadEvent.target.result );
|
|||
|
};
|
|||
|
reader.onerror = function (loadEvent) {
|
|||
|
$('.file-tip').html('Markdown文件转换失败:' + loadEvent);
|
|||
|
};
|
|||
|
reader.readAsText(file, "UTF-8");
|
|||
|
}
|
|||
|
|
|||
|
function addUploadButtonListener() {
|
|||
|
g('contentImport').addEventListener('change', function () {
|
|||
|
const file = this.files[0];
|
|||
|
const fileName = file.name;
|
|||
|
const fileExt = fileName.substring(fileName.lastIndexOf('.') + 1).toLowerCase();
|
|||
|
switch (fileExt) {
|
|||
|
case 'docx':
|
|||
|
case 'doc':
|
|||
|
processWord(file);
|
|||
|
break;
|
|||
|
case 'md':
|
|||
|
processMarkdownFile(file);
|
|||
|
break;
|
|||
|
default:
|
|||
|
$('.file-tip').html('不支持的文件格式:' + fileExt);
|
|||
|
break;
|
|||
|
}
|
|||
|
});
|
|||
|
g('fileInputConfirm').addEventListener('click', function () {
|
|||
|
processMarkdown( g('fileInputContent').value );
|
|||
|
$('.file-input').hide();
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
function addOkListener() {
|
|||
|
dialog.onok = function () {
|
|||
|
if (!contentImport.data.result) {
|
|||
|
alert('请先上传文件识别内容');
|
|||
|
return false;
|
|||
|
}
|
|||
|
editor.fireEvent('saveScene');
|
|||
|
editor.execCommand("inserthtml", contentImport.data.result);
|
|||
|
editor.fireEvent('saveScene');
|
|||
|
};
|
|||
|
dialog.oncancel = function () {
|
|||
|
};
|
|||
|
}
|