尝试调整插入图像的大小时出错

时间:2016-08-03 16:37:05

标签: javascript office365 office-js

背景

处理在word中使用的任务窗格。我目前有将图像插入word doc的功能,但是在处理较大的文档时,我的功能是没有正确完成工作。它要么将图像放在文档的开头,要么放在最后。

问题

我正在寻找让用户选择他们想要的图像并在那里插入图像的能力。这意味着在一个10页的.docx中,如果用户想要将图像放在第三页的两个段落之间,它就会去那里;不是在.docx的开头或结尾

重要

我目前正在使用一个允许我提供插入高度和宽度的图像的功能。我需要能够为图像赋予新的高度和宽度。

代码块1 - 我现在正在使用

    function insertImageToDoc(base64, selectedContents) {
        Word.run(function (context) {
            var paragraphs = context.document.body.paragraphs;
            context.load(paragraphs);
            return context.sync().then(function () {
                var paragraph = paragraphs.items[0];
                var image = paragraph.insertInlinePictureFromBase64(base64, "start");
                image.width = selectedContents.ImageWidth;
                image.height = selectedContents.Imageheight;
                return context.sync()
            });
        })
.catch(function (error) {
    feedBackMessage("Image could not be inserted, please reload and try again");
});
    } 

代码块1

这段代码运行良好但是在插入b64的地方,我唯一需要的选择是插入" start"或者"结束"。这就是用户在处理超过1页的文档时当前遇到的问题。

代码区块2

function insertImageToDoc(base64, selectedContents) {
    Word.run(function (context) {
        var range = context.document.getSelection();
        context.load(range)
        return context.sync().then(function () {
            var image = range.insertInlinePictureFromBase64(base64, Word.InsertLocation.replace);
            context.load(image);
            return context.sync().then(function () {           
                image.width = selectedContents.ImageWidth;
                image.height = selectedContents.Imageheight;
                return context.sync()
            })              
        });
    })
.catch(function (error) {
    feedBackMessage("Image could not be inserted, please reload and try again");
});
}

代码区块2

此块能够在任何给定位置插入图像,但是我失去了实际设置插入图像大小的能力。当我应用高度和宽度时,它会出错。

代码区2错误

enter image description here

摘要

我需要能够在任何给定的位置插入图像,并且还能够调整图像的高度和宽度。

2 个答案:

答案 0 :(得分:2)

在调试并尝试不同的方法后,我发现问题给了我错误。 @Fei,你对使用办公室网络应用程序是正确的。 为了记录,问题会引起问题,因为图片尺寸是以英寸为单位的,而不是以像素为单位上传到SharePoint。这导致office-js给出错误消息而没有调整大小从SharePoint进入的维度。

例如:

enter image description here

如您所见,来自SharePoint的信息告诉我的单词添加以将H =1050 and W = 2445维度应用于图像。以像素为单位应用这些尺寸会导致错误并阻止调整图像大小。这是有道理的。因此,所有邪恶的根源都在Office-js api之外。 意味着我用作示例的两个代码块都可以正常工作。

答案 1 :(得分:0)

selectedContents的类型是什么?以下代码适用于我在线Word

   function replaceImage() {

    var selectedContents = {};
    selectedContents.ImageWidth=20;
    selectedContents.Imageheight=80;

    var base64="iVBORw0KGgoAAAANSUhEUgAAALUAAACmCAIAAAATc1nLAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAKwSURBVHhe7dLBaUMBEEPB1JJ60mwq/L7oal0MgjUzqALxfh54Tx80+qDRB40+aPRBow8afdDog0YfNPqg0QeNPmj0QaMPGn3Q6INGHzT6oNEHjT5o9EGjDxp90OiDRh80+qDRB40+aPRBow8afdDog0YfNPqg0QfNR338/v/ZeLl+RR/HlutX9HFsuX5FH8eW61f0cWy5fkUfx5brV/RxbLl+RR/HlutX9HFsuX5FH8eW61f0cWy5fkUfx5brV/RxbLl+RR/HlutX9HFsuX5FH8eW61f0cWy5fkUfx5brV/RxbLl+RR/HlutX9HFsuX5FH8eW61f0cWy5fkUfx5brV/RxbLl+RR/HlutX9HFsuX5FH8eW61f0cWy5fkUfx5brV/RxbLl+RR/HlutX9HFsuX5FH8eW61f0cWy5fkUfx5brV/RxbLl+RR/HlutX9HFsuX5FH8eW61f0cWy5fkUfx5brV/RxbLl+RR/HlutX9HFsuX5FH8eW61f0cWy5fkUfx5brV/RxbLl+RR/HlutX9HFsuX5FH8eW61f0cWy5fkUfx5brV/RxbLl+RR/HlutX9HFsuX5FH8eW61f0cWy5fkUfx5brV/RxbLl+RR/HlutX9HFsuX5FH8eW61f0cWy5fkUfx5brV/RxbLl+RR/HlutX9HFsuX5FH8eW61f0cWy5fkUfx5brV/RxbLl+RR/HlutX9HFsuX5FH8eW61f0cWy5fkUfx5brV/RxbLl+RR/HlutXPuqDr6cPGn3Q6INGHzT6oNEHjT5o9EGjDxp90OiDRh80+qDRB40+aPRBow8afdDog0YfNPqg0QeNPmj0QaMPGn3Q6INGHzT6oNEHjT5o9EGjDxp90OiDRh80+qDRB40+aPRBow8afdDog0YfNPqg0QeNPmj0QaMP3nueF7X1b7GBbsAsAAAAAElFTkSuQmCC";
    insertImageToDoc(base64, selectedContents);
}

function insertImageToDoc(base64, selectedContents) {
    Word.run(function (context) {
        var range = context.document.getSelection();
        context.load(range)
        return context.sync().then(function () {
            var image = range.insertInlinePictureFromBase64(base64, Word.InsertLocation.replace);
            context.load(image);
            return context.sync().then(function () {           
                image.width = selectedContents.ImageWidth;
                image.height = selectedContents.Imageheight;
                return context.sync()
            })              
        });
    })
.catch(function (error) {
    feedBackMessage("Image could not be inserted, please reload and try again");
});
}

以下是测试的步骤: 1.从在线插入图像 2.选择图像并单击按钮以执行replaceImage功能。

此外,您正在开发的客户是什么?