背景
我正在开发一个Office插件,使用Word Javascript API在文档中插入一些图表,然后用新数据重新绘制它们。我遇到了一个关于获取内联图片对象大小的问题
当前方法如下:
创建指定大小的图像=>在内容控件内换行=>将图像大小添加到内容控件标签=>在文档中插入内容控件=>刷新时获取CC标签,用该标签的大小重新绘制图像=>
我这样做的原因是,当获取Word.InlinePicture对象时,我似乎总是会得到宽度和高度小于文档中弹出的图像的布局窗口中显示的值-会进行一些舍入,但会看到大约100像素的差异,大约是一英寸相当多的
理想情况下,我希望能够使用类似于以下的代码从该对象中获得大小:
return Word.run((context: Word.RequestContext): Promise < void > => {
var contentControls = context.document.contentControls;
context.load(contentControls, 'tag');
return context.sync().then(() => {
let contentControlToRefresh: Word.ContentControl;
// Find the content control containing imageId
for (var contentControl of contentControls.items) {
if (Utils.contains(contentControl.tag, imageId)) {
// Add control to tracked objects
context.trackedObjects.add(contentControl);
contentControlToRefresh = contentControl;
}
}
// Get the image from the content control -- need to get the size
var pics = contentControlToRefresh.inlinePictures;
context.load(pics);
return context.sync().then(() => {
let pic: Word.InlinePicture = pics.items[0];
context.trackedObjects.add(pics.items[0]);
// Set size
let size: Dimensions = {
height: pic.height,
width: pic.width
}; // These two values pic.height and pic.width are slightly smaller than original image
})
}
});
问题
Word.InlinePicture值低于实际布局值
我是不是遗漏了一些明显的东西,或者这是Word API中的一个实际错误?
一些注意事项
-
我所有图像的绝对大小都等于它们的原始大小以特定分辨率成功生成图像
-
在内容控件中拖放图像效果不佳Office js_inlinePictureID未正确设置
谢谢Todor。我认为你的主要问题不是得到图像的尺寸,而是宽度和高度的单位。
在Word中使用inlinePictures时需要记住的一点是(顺便说一句,VBA、VSTO和Office.js也是如此(宽度和高度单位用点表示(这与UI中显示的单位不同,在美国的语言环境中是英寸(。在设置和获取值时,情况也是如此。
FYI
- 1英寸=71.942分
- 点=像素*72/96
希望这能有所帮助。