- composer require phpoffice/phpword
- 'ajaxfileupload':'../libs/ajaxfileupload/ajaxfileupload',
- define(['jquery', 'bootstrap', 'backend', 'table', 'form','summernote','layer','ajaxfileupload'], function ($, undefined, Backend, Table, Form,summernote,layer,ajaxfileupload) {
- add: function () {
- Controller.api.bindevent();
-
- var imageButton = function (context) {
- var ui = $.summernote.ui;
- var button = ui.button({
- contents: '<i class="fa fa-file-image-o"/>',
- tooltip: __('Choose'),
- click: function () {
- parent.Fast.api.open("general/attachmentlect?element_id=&multiple=true&mimetype=image/*", __('Choose'), {
- callback: function (data) {
- var urlArr = data.url.split(/\,/);
- $.each(urlArr, function () {
- var url = Fast.api.cdnurl(this);
- context.invoke('editor.insertImage', url);
- });
- }
- });
- return false;
- }
- });
- return button.render();
- };
- var attachmentButton = function (context) {
- var ui = $.summernote.ui;
- var button = ui.button({
- contents: '<i class="fa fa-file"/>',
- tooltip: __('Choose'),
- click: function () {
- parent.Fast.api.open("general/attachmentlect?element_id=&multiple=true&mimetype=*", __('Choose'), {
- callback: function (data) {
- var urlArr = data.url.split(/\,/);
- $.each(urlArr, function () {
- var url = Fast.api.cdnurl(this);
- var node = $("<a href='" + url + "'>" + url + "</a>");
- context.invoke('insertNode', node[0]);
- });
- }
- });
- return false;
- }
- });
- return button.render();
- };
- // 新增编辑器导入word功能
- var wordBtn = function (context) {
- var ui = $.summernote.ui;
- var button = ui.button({
- contents: '<i class="fa fa-file-word-o"/>',
- tooltip: '导入word',
- click: function () {
- // 点击之后的操作
- layer.open({
- type: 1,
- skin: 'layui-layer-rim', //加上边框
- area: ['420px', '160px'], //宽高
- content: '<input type="file" id="file" name="file" title="上传word" value="" ><br/><input type="button" value="上传" id="submit" />'
- });
- }
- });
- return button.render(); // return button as jquery object
- };
- $(".summernote,.editor", $('form')).summernote({
- height: 250,
- lang: 'zh-CN',
- fontNames: [
- 'Arial', 'Arial Black', 'Serif', 'Sans', 'Courier',
- 'Courier New', 'Comic Sans MS', 'Helvetica', 'Impact', 'Lucida Grande',
- "Open Sans", "Hiragino Sans GB", "Microsoft YaHei",
- '微软雅黑', '宋体', '黑体', '仿宋', '楷体', '幼圆',
- ],
- fontNamesIgnoreCheck: [
- "Open Sans", "Microsoft YaHei",
- '微软雅黑', '宋体', '黑体', '仿宋', '楷体', '幼圆'
- ],
- toolbar: [
- ['style', ['style', 'undo', 'redo']],
- ['font', ['bold', 'underline', 'strikethrough', 'clear']],
- ['fontname', ['color', 'fontname', 'fontsize']],
- ['para', ['ul', 'ol', 'paragraph', 'height']],
- ['table', ['table', 'hr']],
- ['insert', ['link', 'picture', 'video']],
- ['select', ['image', 'attachment']],
- ['view', ['fullscreen', 'codeview', 'help','word']],
- ],
- buttons: {
- image: imageButton,
- attachment: attachmentButton,
- word:wordBtn
- },
- dialogsInBody: true,
- followingToolbar: false,
- callbacks: {
- onChange: function (contents) {
- $(this).val(contents);
- $(this).trigger('change');
- },
- onInit: function () {
- },
- onImageUpload: function (files) {
- var that = this;
- //依次上传图片
- for (var i = 0; i < files.length; i++) {
- Upload.api.send(files[i], function (data) {
- var url = Fast.api.cdnurl(data.url);
- $(that).summernote("insertImage", url, 'filename');
- });
- }
- }
- }
- });
- // 点击上传按钮,发送ajax,上传word文档,并获取到返回的html地址
- // 动态生成的元素需要使用在document上加点击事件
- $(document).on('click','#submit',function(){
- var path = $('#file').val();
- if ($.trim(path) == "") {
- alert("请选择要上传的文件");
- return;
- }
- $.ajaxFileUpload({
- url: 'form', //这里是服务器处理的代码
- type: 'post',
- secureuri: false, //一般设置为false
- fileElementId: 'file', // 上传文件的id、name属性名
- dataType: 'json', //返回值类型,一般设置为json、application/json
- success: function (data, status) {
- console.log('success')
- },
- error:function(data, status, e){
- console.log('error')
- var responseText = data.responseText;
- // console.log(responseText);
- // 把html赋值给富文本,,并关闭layui
- $('.layui-layer-close').click();
- $(".summernote,.editor", $('form')).summernote('code',responseText);
- }
- });
- });
- },
-
- use PhpOffice\PhpWord\PhpWord;
- ...
- public function form(){
- // 接收表单上传的文件,并存储到服务器中
- $file = $_FILES['file']['tmp_name'];//上传的文件
- move_uploaded_file($file,"/words/res.docx");
- // 使用phpword将word转为html
- $phpWord = IOFactory::load('/words/res.docx');
- $xmlWriter = IOFactory::createWriter($phpWord, "HTML");
- $resPath = '/words/res.html';
- $xmlWriter->save($resPath);
- $html = file_get_contents($resPath);
- return $html;
- }