我使用企业wiki模板有一个发布网站集。目前如果我有一个包含文本和图像的单词文档,我复制了所有单词文档内容,之后我粘贴了富文本编辑器中的内容,那么只有文本将被复制(没有图像)。

所以我的问题如果有一种方法可以允许粘贴着富文本编辑器内的图片?

感谢

有帮助吗?

解决方案

您无法直接将图像粘贴到SharePoint页面中,图像无法呈现为HTML,因此无法粘贴。

您必须将图像上传到SharePoint中,然后将其插入您想要的页面/地点。

或者您可以尝试第三方工具。

http://www.kwizcom.com/sharepoint-add-ons / sharepoint-clipboard-manager /概述/

http://www.telerik.com/products/aspnet-ajax/editor.aspx

其他提示

您可以利用浏览器将Base64编码图像粘贴到可编辑内容中。但由于SharePoint的编辑器STRIPS Base64映像您可以使用肮脏的技巧将图像内容存储到隐藏的占位符,这些占位符不会被剥离,然后在页面加载上从这些占位符呈现图像。

有专业人士(它做了这项工作,易于使用 - 只需将脚本添加到您的网站)和缺点(大型内联图像,逐个播放图像,逐个逐个图像,额外的JS事件等)。

因此,请尝试使用此JavaScript(将其插入嵌入代码,在母版页等中),它应该只是工作(在SharePoint 2013 Enterprise Wiki中测试,但它应该与任何代码调整的任何SharePoint内容编辑表单一起使用)。请注意,您必须首先设置您的编辑器Div的ID。

    <script type='text/javascript'>

    //set your editable content (editor) client id here:
    var editorClientId = "ctl00_PlaceHolderMain_PageContent_RichHtmlField_displayContent"

    _spBodyOnLoadFunctionNames.push("renderImages()");

    function getImagesByAlt(alt) {
        var allImages = document.getElementsByTagName("img");
        var images = [];
        for (var i = 0, max = allImages.length; i < max; ++i)
            if (allImages[i].alt == alt)
                images.push(allImages[i]);
        return images;
    }
    //if page is in edit mode, delay for other scripts to finish first
    function renderImages() {
        if (window.location.href.indexOf("ControlMode=Edit") > -1)
            setTimeout(function () { renderImagesStart(); }, 1500);
        else
            renderImagesStart();
    }
    //apply data-imgrefs attribute to stripped image contents
    function renderImagesStart() {
        var allSpans = document.getElementsByClassName("imgrefs");
        for (var i = 0, max = allSpans.length; i < max; i++) {
            var img = getImagesByAlt(allSpans[i].title)[0];
            if (img != null)
                img.src = "data:image/gif;base64," + allSpans[i].getAttribute("data-imgref");
        }
    }
    //chrome paste handler
    var IMAGE_MIME_REGEX = /^image\/(p?jpeg|gif|png)$/i;
    var loadImage = function (file) {
        var reader = new FileReader();
        reader.onload = function (e) {
            var img = document.createElement('img');
            img.src = e.target.result;

            var range = window.getSelection().getRangeAt(0);
            range.deleteContents();
            range.insertNode(img);
        };
        reader.readAsDataURL(file);
    };
    document.onpaste = function (e) {
        var items = e.clipboardData.items;
        for (var i = 0; i < items.length; i++) {
            if (IMAGE_MIME_REGEX.test(items[i].type)) {
                loadImage(items[i].getAsFile());
                return;
            }
        }
    }
    //if page is in edit mode apply onblur (leave editor) event to hide images base64 content to spans
    //class name, data- and alt attributes are used because sharepoint doesn't strip them
    if (window.location.href.indexOf("ControlMode=Edit") > -1)
        document.getElementById(editorClientId).onblur = function () {
            var editor = document.getElementById(editorClientId);
            var childNodes = editor.childNodes;
            //remove spans
            for (var i = childNodes.length - 1; i >= 0; i--) {
                var childNode = childNodes[i];
                if (childNode.className == 'imgrefs')
                    childNode.parentNode.removeChild(childNode);
            }
            var imgs = editor.getElementsByTagName("img");
            var id = 0;
            //for each base64 image: hide its content to span data-imgref attribute and append span to editor
            for (var i = 0, max = imgs.length; i < max; i++) {
                var img = imgs[i];
                if (img.src.indexOf("data:image") > -1) {
                    id += 1;
                    img.alt = id & 0xffff;
                    img.alt = 'img' + img.alt;
                    var src = img.src.replace('data:image/gif;base64,', '').replace('data:image/png;base64,', '').replace('data:image/jpg;base64,', '');
                    var span = document.createElement("span");
                    span.className = "imgrefs";
                    span.title = img.alt;
                    span.setAttribute("data-imgref", src);
                    span.innerText = '';
                    editor.appendChild(span);
                }
            }
        }

</script>
. 此外,可以升级它可以使用SharePoint的Web Service将粘贴的Base64图像存储在服务器上的文件 copyintoItems直接在javascript(粘贴或某些预存活动上),然后用服务器上的图像文件名替换base64。

我发现我可以使用讨论板列表编辑器至少插入 - >从计算机中使用编辑器工具操作嵌入文本中的图像。然后,您可以从那里剪切和粘贴到普通的SharePoint列表项丰富的文本字段中。您甚至不必保存常常编辑的讨论列表帖子,只需在剪切和粘贴它后取消帖子。如果您需要更复杂的图像操作(如旋转图像),那么如果您可以通过电子邮件发送到您的讨论板列表,您可以简单地使用Outlook电子邮件编辑器来撰写文本和图像并将其发送到该讨论板列表。

许可以下: CC-BY-SA归因
scroll top