OpenOffice Drawing API:从页面大小的图片创建幻灯片

时间:2011-07-17 08:04:49

标签: api openoffice.org openoffice-impress

我从一系列图像文件创建Impress演示文稿。我可以创建一个Page并插入GraphicObjectShape没有任何问题,但是当我必须调整包含图像的形状时会卡住。

我的问题是我不知道我应该使用什么尺寸。当然,我可以选择一个试错过程,但它不是很专业吗​​?

我的问题:我创建的像素的新Page的大小是多少?如何访问图片上下文菜单中的“原始大小”功能?

在页面设置中,我看到大小为11.02“x 8.27” - 当我在其中创建新文档和新页面时,是否保证所有未来版本都将使用此大小?

知道图像文件的大小应该适合整个页面会很有趣。

1 个答案:

答案 0 :(得分:1)

似乎光栅图像以96 DPI分辨率加载。如果您使用Impress的默认页面大小(11.02“x 8.27”),则完全拟合的栅格图像大小(以像素为单位)为:

1058 x 794

此外,如果您坚持使用此大小(因为它可能是最兼容的选择,例如当您保存到PPT时),请不要依赖于这是默认值。创建文档后,您可以通过设置任何页面的WidthHeight属性来设置幻灯片的大小(在调整其中一个页面后,似乎所有其他页面都会跟随)。

API使用100 / mm比例。 11.02 iches为280 mm,宽度为280 * 100 = 28000,高度为21000。

将示例调整为 11.02“x 8.27”并插入(最好是4:3)图像以适合整个页面的Java示例:

XDrawPage page;
XMultiServiceFactory factory;

// ... setting up the environment and opening document

// resize the page (and all other pages) to our default size
XPropertySet pagePropSet = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, page);
pagePropSet.setPropertyValue("Width", 28000);
pagePropSet.setPropertyValue("Height", 21000);

// create GraphicObjectShape with the size of the page in the top-left corner
Object picture = factory.createInstance("com.sun.star.drawing.GraphicObjectShape");
XShape pictureShape = (XShape)UnoRuntime.queryInterface(XShape.class, picture);
pictureShape.setSize(new Size(28000, 21000));
pictureShape.setPosition(new Point(0, 0));

// load the image file into our the shape
XPropertySet propSet = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, pictureShape);
propSet.setPropertyValue("GraphicURL", new File("c:\\Users\\Vbence\\Downloads\\slide.png").toURI().toURL().toString());

// add the shape to the page
page.add(pictureShape);