Добавление разрыва страницы во Writer

Автор zhukovia, 4 декабря 2019, 16:11

0 Пользователи и 1 гость просматривают эту тему.

zhukovia

Цитата: mikekaganski от  5 декабря 2019, 11:55Если не получается, дайте конкретный вариант кода, с адресом, чтобы попробовать.
Код такой
xProvider = ServiceManager.createInstance("com.sun.star.graphic.GraphicProvider");
Prop = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue");
Prop.Name = "URL";
Prop.Value = ПутьURL;
Args = Новый COMSafeArray("VT_VARIANT", 1);
Args.SetValue(0, Prop);
TextPointer.insertTextContent(CursorPointer, xProvider.queryGraphic(Args), false);

ПутьURL пробовал и vnd.sun.star.GraphicObject:10000201000002E00000019E0385EE102031DB3A и file://localhost/c:/temp/ronobe/re_zerro/yuzouni3small1.png. Не работает. Или я не так вас понял?

zhukovia

Цитата: mikekaganski от  5 декабря 2019, 11:55Это был ответ на что?
на это
Цитата: mikekaganski от  5 декабря 2019, 11:46А причём тут тип объекта xProvider? Вы разве xProvider передаёте? не результат выполнения его метода queryGraphic?

mikekaganski

Цитата: zhukovia от  5 декабря 2019, 12:02
Цитата: mikekaganski от  5 декабря 2019, 11:55Это был ответ на что?
на это
Цитата: mikekaganski от  5 декабря 2019, 11:46А причём тут тип объекта xProvider? Вы разве xProvider передаёте? не результат выполнения его метода queryGraphic?
Хм. Давайте ещё раз посмотрим на вопрос:
Цитата: zhukovia от  5 декабря 2019, 11:44
Цитата: zhukovia от  5 декабря 2019, 11:07TextPointer.insertTextContent( CursorPointer, oImage, False );
Я посмотрел у метода insertTextContent тип второго элемента должен быть xContent, а у объекта xProvider тип GraphicProvider. Или я неправильно понимаю?
и на то, что было сделано:

Цитата: zhukovia от  5 декабря 2019, 11:51
Цитата: mikekaganski от  5 декабря 2019, 10:46Создаёте объект XGraphic. Для этого нужно использовать сервис "GraphicProvider".
Затем используете метод XText.insertTextContent.
Цитата: mikekaganski от  5 декабря 2019, 10:46TextPointer.insertTextContent(CursorPointer, xProvider.queryGraphic(Args), false)
Я просто сделал как вы написали.
и попробуем понять, что именно было передано в insertTextContent, у которого "тип второго элемента должен быть xContent". Разве второй аргумент xProvider? нет. Там xProvider.queryGraphic(Args).
С уважением,
Михаил Каганский

zhukovia

Цитата: mikekaganski от  5 декабря 2019, 12:06Там xProvider.queryGraphic(Args)
Я не спорю, возможно там какой то другой тип. Просто на код который вы посоветовали вылазит ошибка "Неверный тип", вот я и пытаюсь понять, что я не так делаю.

mikekaganski

У меня ошибка: результат xProvider.queryGraphic(Args) нужно передвавть в свойство Graphic объекта GraphicObject. Исправленный метод:
xProvider = ServiceManager.createInstance("com.sun.star.graphic.GraphicProvider");

Prop = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue");
Prop.Name = "URL";
Prop.Value = ПутьКФайлуКартинки;
Args = Новый COMSafeArray("VT_VARIANT", 1);
Args.SetValue(0, Prop);

oImage = Document.createInstance("com.sun.star.text.GraphicObject");
oImage.Graphic = xProvider.queryGraphic(Args);
oImage.AnchorType = 1;
//oImage.Width = 4000
//oImage.Height = 3000
//Вставляем этот графический объект в ячейку таблицы
//oTextTable = Document.getTextTables().getByIndex(0);
//oCellByName = oTextTable.getCellByName("B2");
//oText = oCellByName.getText()
TextPointer.insertTextContent( CursorPointer, oImage, False );
С уважением,
Михаил Каганский

zhukovia

Цитата: mikekaganski от  5 декабря 2019, 12:18У меня ошибка: результат xProvider.queryGraphic(Args) нужно передвавть в свойство Graphic объекта GraphicObject. Исправленный метод:
Спасибо, так заработало. А по поводу размера картинки. Нет метода сделать ее по ширине страницы или пропорционально расширить задавая только ширину?

mikekaganski

#36
Вот код для задания размера пропорционально по всей странице (по ширине или высоте, как получится)

...
oImage.RelativeWidth = 100;
oImage.RelativeWidthRelation = 8;
oImage.RelativeHeight = 100;
oImage.RelativeHeightRelation = 8;
TextPointer.insertTextContent( CursorPointer, oImage, False );
size = oImage.Graphic.Size;
size2 = oImage.LayoutSize;
horRelation = size2.Width/size.Width;
verRelation = size2.Height/size.Height;
If (horRelation < verRelation) Then
 oImage.RelativeHeight = 100 / verRelation * horRelation;
Else
 oImage.RelativeWidth = 100 / horRelation * verRelation;
EndIf;
С уважением,
Михаил Каганский

zhukovia

Цитата: mikekaganski от  5 декабря 2019, 13:00Вот код для задания размера пропорционально по всей странице (по ширине или высоте, как получится)
Буду пробовать. Спасибо вам большое за помощь. Благодаря вам стало более понятно как это работает.