Variant App, Desktop, OpenParams, DocWord, ServiceManager, Dispatcher, CurrentController, Frame;
//Открываем OPENOFFICE
App = Variant::CreateObject("com.sun.star.ServiceManager");
Desktop = App.OleFunction("createInstance", "com.sun.star.frame.Desktop");
int Bounds2[2] = {0,0};
OpenParams = VarArrayCreate(Bounds2, 1, varVariant);
Variant MyStruct = App.OleFunction("Bridge_GetStruct","com.sun.star.beans.PropertyValue");
MyStruct.OlePropertySet("name","Hidden");
MyStruct.OlePropertySet("value", false);
OpenParams.PutElement(MyStruct, 0);
//Открытие файла
DocWord = Desktop.OleFunction("LoadComponentFromURL", "file:///C:/Shablon.doc", "_blank", 0, OpenParams);
//Вставляем картику
ServiceManager = Variant::CreateObject("com.sun.star.ServiceManager");
//параметры
Variant MyStruct1 = ServiceManager.OleFunction("Bridge_GetStruct", "com.sun.star.beans.PropertyValue");
MyStruct1.OlePropertySet("name","FileName");
MyStruct1.OlePropertySet("value","file:///C:/1.JPG");
Variant MyStruct2 = ServiceManager.OleFunction("Bridge_GetStruct", "com.sun.star.beans.PropertyValue");
MyStruct2.OlePropertySet("name","AnchorType");
MyStruct2.OlePropertySet("value","com.sun.star.text.TextContentAnchorType.AS_CHARACTER");
Variant MyStruct3 = ServiceManager.OleFunction("Bridge_GetStruct", "com.sun.star.beans.PropertyValue");
MyStruct3.OlePropertySet("name","Width");
MyStruct3.OlePropertySet("value", 25);
int Bounds[2] = {0,2};
Variant VariantArray = VarArrayCreate(Bounds, 1, varVariant);
VariantArray.PutElement(MyStruct1, 0);
VariantArray.PutElement(MyStruct2, 1);
VariantArray.PutElement(MyStruct3, 2);
Dispatcher= ServiceManager.OleFunction("createInstance", "com.sun.star.frame.DispatchHelper");
CurrentController = DocWord.OleFunction("getCurrentController");
Frame = CurrentController.OleFunction("getFrame");
Dispatcher.OleFunction("executeDispatch",Frame,".uno:InsertGraphic","",0, VariantArray);
Builder и Office
Нужно в шаблон WORD, используя OPENOFFICE, вставить изображение и установить его размеры. Среда разработки – Builder.
Вот код. Почему не устанавливается размер изображения?
Код:
Как установить размер изображения?
А проверка на ошибки имеется?
Цитата:
MyStruct3.OlePropertySet("name","Width");
MyStruct3.OlePropertySet("value", 25);
ну так и где проверка на ошибки в этих строках?
Есть код из книжки, но не получилось его перевести в Builder
Код:
Sub InsertGraphicObject(oDoc, sURL$)
REM Author: Andrew Pitonyak
Dim oCursor
Dim oGraph
Dim oText
oText = oDoc.getText()
oCursor = oText.createTextCursor()
oCursor.goToStart(FALSE)
oGraph = oDoc.createInstance("com.sun.star.text.GraphicObject")
With oGraph
.GraphicURL = sURL
.AnchorType = com.sun.star.text.TextContentAnchorType.AS_CHARACTER
.Width = 6000
.Height = 8000
End With
' теперь вставляем изображение в текстовый документ
oText.insertTextContent( oCursor, oGraph, False )
End Sub
REM Author: Andrew Pitonyak
Dim oCursor
Dim oGraph
Dim oText
oText = oDoc.getText()
oCursor = oText.createTextCursor()
oCursor.goToStart(FALSE)
oGraph = oDoc.createInstance("com.sun.star.text.GraphicObject")
With oGraph
.GraphicURL = sURL
.AnchorType = com.sun.star.text.TextContentAnchorType.AS_CHARACTER
.Width = 6000
.Height = 8000
End With
' теперь вставляем изображение в текстовый документ
oText.insertTextContent( oCursor, oGraph, False )
End Sub
MyStruct3.OlePropertySet("name","Width");
MyStruct3.OlePropertySet("value", 25);
С OpenOffice не знаю, но в MS Word должно что-то быть вроде
MyStruct3.OlePropertySet("Width",25);
Да и еще, код в try-catch обернут? Может какое исключение будет вылазить?