尝试调整插入的图像大小时出错
Getting error when trying to resize an inserted image
背景
正在处理正在 word 中使用的任务窗格添加。我目前具有将图像插入 word 文档的功能,但是在处理较大的文档时,我的功能无法正确完成工作。它将图像放在文档的开头或结尾。
问题
我正在寻找让用户 select 在他们想要图像的地方插入图像的功能。这意味着在一个 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" 或 "end" 处插入。这就是用户当前在处理超过 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 错误
总结
我需要能够在任何指定位置插入图像,并且能够调整图像的高度和宽度。
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. select图片点击按钮执行replaceImage
功能
另外,你开发的客户端是什么?
好的,调试并尝试不同的方法后,我发现了导致错误的问题。 @Fei,关于它与 Office Web 应用程序一起使用是正确的。 郑重声明,问题的产生是因为当上传到 SharePoint 时图像尺寸是以英寸为单位而不是以像素为单位。这导致 office-js 给出错误消息并且没有调整为来自 SharePoint 的尺寸。
例如:
如您所见,来自 SharePoint 的信息告诉我,添加将 H =1050 and W = 2445
尺寸应用于图像。以像素为单位应用这些尺寸会导致错误并阻止图像调整大小。这是有道理的。所以万恶之源在 Office-js api 之外。 这意味着我用作示例的两个代码块都可以正常工作。
背景
正在处理正在 word 中使用的任务窗格添加。我目前具有将图像插入 word 文档的功能,但是在处理较大的文档时,我的功能无法正确完成工作。它将图像放在文档的开头或结尾。
问题
我正在寻找让用户 select 在他们想要图像的地方插入图像的功能。这意味着在一个 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" 或 "end" 处插入。这就是用户当前在处理超过 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 错误
总结
我需要能够在任何指定位置插入图像,并且能够调整图像的高度和宽度。
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. select图片点击按钮执行replaceImage
功能
另外,你开发的客户端是什么?
好的,调试并尝试不同的方法后,我发现了导致错误的问题。 @Fei,关于它与 Office Web 应用程序一起使用是正确的。 郑重声明,问题的产生是因为当上传到 SharePoint 时图像尺寸是以英寸为单位而不是以像素为单位。这导致 office-js 给出错误消息并且没有调整为来自 SharePoint 的尺寸。
例如:
如您所见,来自 SharePoint 的信息告诉我,添加将 H =1050 and W = 2445
尺寸应用于图像。以像素为单位应用这些尺寸会导致错误并阻止图像调整大小。这是有道理的。所以万恶之源在 Office-js api 之外。 这意味着我用作示例的两个代码块都可以正常工作。