API рисования OpenOffice: создание слайд-шоу из изображений размером с страницу - PullRequest
1 голос
/ 17 июля 2011

Я создаю презентацию Impress из серии файлов изображений.Я могу создать Page и вставить GraphicObjectShape без каких-либо проблем, но застрял, когда мне нужно измерить форму, содержащую изображение.

Моя проблема в том, что я понятия не имею, какие размеры следует использовать,Конечно, я мог бы пойти методом проб и ошибок, но это было бы не очень профессионально, не правда ли?

Мои вопросы: каков размер нового Page, который я создаю в пикселях ?Как получить доступ к функции «Размер оригинала», которую можно найти в контекстном меню изображения?

В настройках страницы я вижу размер 11,02 x 8,27 - есть ли гарантия того, что все будущие версии будут использоватьэтот размер, когда я создаю новый документ и новую страницу внутри?

Было бы интересно узнать, каким должен быть размер файла изображения для всей страницы.

1 Ответ

1 голос
/ 17 июля 2011

Кажется, что растровые изображения загружаются с разрешением 96 DPI. Если вы используете размер страницы по умолчанию для Impress (11,02 x 8,27 дюйма), тогда размер полностью подходящего растрового изображения (в пикселях):

1058 x 794

Кроме того, если вы придерживаетесь этого размера (поскольку это, вероятно, наиболее совместимый выбор, например, когда вы сохраняете в PPT), не полагайтесь на тот факт, что это значение по умолчанию. После создания документа вы можете установить размер слайдов, установив свойства Width и Height любой страницы (кажется, что все другие страницы будут следовать после изменения размера одной из них).

API использует шкалу 100 / мм. 11.02 дюйма равны 280 мм, поэтому ширина 280 * 100 = 28000, высота 21000.

Пример Java для изменения размера представления до 11,02 "x 8,27" и вставки (предпочтительно 4: 3) изображения для всей страницы:

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);
...