获取 Word.InlinePicture 高度和宽度
Getting Word.InlinePicture Height and Width
背景
我正在开发一个 Office 插件,使用 Word Javascript APIs 在文档中插入一些图表,然后用新数据重新绘制它们。我在获取内联图片对象的大小方面遇到了问题
目前的做法如下:
以指定大小创建图像 => 在内容控件内包装 => 将图像大小添加到内容控件标签 => 在文档中插入内容控件 => 刷新时获取 CC 标签重绘图像,该标签的大小 =>
我这样做的原因是因为在获取 Word.InlinePicture 对象时我似乎总是得到 width 和 height 小于文档中嵌入的图像的 Layout window 中显示的值 - 发生了一些舍入但是看到大约 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 设置不正确
谢谢托多。我认为您的主要问题不是获取图像尺寸,而是更多关于用于宽度和高度的单位。
在 Word 中使用 inlinePictures 时要记住的一点(顺便说一句,VBA、VSTO 和 Office.js 也是如此)是宽度和高度单位以点表示(即UI 中显示的不同单位,在 us-en 语言环境中是英寸)。设置和获取值时也是如此。
仅供参考
- 1 英寸 = 71.942 点。
- 点 = 像素 * 72 / 96
希望对您有所帮助。
背景
我正在开发一个 Office 插件,使用 Word Javascript APIs 在文档中插入一些图表,然后用新数据重新绘制它们。我在获取内联图片对象的大小方面遇到了问题
目前的做法如下:
以指定大小创建图像 => 在内容控件内包装 => 将图像大小添加到内容控件标签 => 在文档中插入内容控件 => 刷新时获取 CC 标签重绘图像,该标签的大小 =>
我这样做的原因是因为在获取 Word.InlinePicture 对象时我似乎总是得到 width 和 height 小于文档中嵌入的图像的 Layout window 中显示的值 - 发生了一些舍入但是看到大约 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 设置不正确
谢谢托多。我认为您的主要问题不是获取图像尺寸,而是更多关于用于宽度和高度的单位。
在 Word 中使用 inlinePictures 时要记住的一点(顺便说一句,VBA、VSTO 和 Office.js 也是如此)是宽度和高度单位以点表示(即UI 中显示的不同单位,在 us-en 语言环境中是英寸)。设置和获取值时也是如此。
仅供参考
- 1 英寸 = 71.942 点。
- 点 = 像素 * 72 / 96
希望对您有所帮助。