我目前正在为Word添加Office.js
,我正在尝试插入来自给定网址的图片。我正在查看Office.js
文档,该文档位于:
InlinePicture object (JavaScript API for Word)
我发现它们可能具有内置功能,即通过"getBase64ImageSrc()"
从img url获取base64表示。开发办公室网站上的文档有误导性或不正确。
想看看是否有人构建了一个使用"getBase64ImageSrc()"
从网址插入图片的文字插件?或者我正朝着错误的方向前进。
答案 0 :(得分:3)
需要详细阐述迈克的答案,以避免混淆。
Staffer901:你正在谈论这篇文章中的两个不同主题。
我建议你做的图像插入(永久插入:))是使用range.insertInlinePictureFromBase64方法。你需要有一个额外的步骤来将URL中的图像编码为base64字符串,这是方法接受的输入参数,here是如何实现这一点的一个很好的讨论..查看下面的示例显示在文档的第一段插入InlinePicture,假设您有base64。请注意,您可以获取当前插入点并在需要时插入图片。 insertInlinePictureFromBase64 是从范围继承的任何对象的方法,如正文,段落,内容控制等。
这是一个示例:
// Run a batch operation against the Word object model.
Word.run(function (context) {
// Create a proxy object for the paragraphs collection.
var paragraphs = context.document.body.paragraphs;
// Queue a commmand to load the style property for all of the paragraphs.
context.load(paragraphs);
// Synchronize the document state by executing the queued commands,
// and return a promise to indicate task completion.
return context.sync().then(function () {
// Queue a command to get the first paragraph.
var paragraph = paragraphs.items[0];
var b64encodedImg = "iVBORw0KGgoAAAANSUhEUgAAAB4AAAANCAIAAAAxEEnAAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACFSURBVDhPtY1BEoQwDMP6/0+XgIMTBAeYoTqso9Rkx1zG+tNj1H94jgGzeNSjteO5vtQQuG2seO0av8LzGbe3anzRoJ4ybm/VeKEerAEbAUpW4aWQCmrGFWykRzGBCnYy2ha3oAIq2MloW9yCCqhgJ6NtcQsqoIKdjLbFLaiACnYyf2fODbrjZcXfr2F4AAAAAElFTkSuQmCC";
// Queue a command to insert a base64 encoded image at the beginning of the first paragraph.
paragraph.insertInlinePictureFromBase64(b64encodedImg, Word.InsertLocation.start);
// Synchronize the document state by executing the queued commands,
// and return a promise to indicate task completion.
return context.sync().then(function () {
console.log('Added an image to the first paragraph.');
});
});
})
.catch(function (error) {
console.log('Error: ' + JSON.stringify(error));
if (error instanceof OfficeExtension.Error) {
console.log('Debug info: ' + JSON.stringify(error.debugInfo));
}
});
最后请注意,Michaels提到的setSelectedDataAsync方法最近更新以支持图像插入,您还需要提供图像的base64,但好处是您可以向后兼容(它也适用于2013客户端)这是一个代码示例:
// assumes a valid base64 is provided as the first parameter.
Office.context.document.setSelectedDataAsync(mybase64, { coercionType: 'image' }, function (result) {
if (result.status == 'succeeded')
app.showNotification("Image inserted");
else
app.showNotification("Error:" + result.error.message + " : " + error.name)
})
我希望这很有用。 谢谢,快乐的编码! -Juan。
答案 1 :(得分:0)
要在Word中插入网址中的图片,请使用Range.insertHtml方法或Document.setSelectedDataAsync方法,具体取决于您的具体方案和目标。
看起来您链接的其他方法的文档中存在错误 - 我会确保更正,但我不相信它是您正在寻找的API。