背景
处理在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错误
摘要
我需要能够在任何给定的位置插入图像,并且还能够调整图像的高度和宽度。
答案 0 :(得分:2)
在调试并尝试不同的方法后,我发现问题给了我错误。 @Fei,你对使用办公室网络应用程序是正确的。 为了记录,问题会引起问题,因为图片尺寸是以英寸为单位的,而不是以像素为单位上传到SharePoint。这导致office-js给出错误消息而没有调整大小从SharePoint进入的维度。
例如:
如您所见,来自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
功能。
此外,您正在开发的客户是什么?