Печать документа LibreOffice из программы на VB6

Автор bigor, 28 марта 2019, 16:06

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

bigor

Добрый день.

Столкнулся с проблемой при написании программы на VB6, которая после обработки документа
в LibreOffice должна его распечатать.

Проблема:
Dim Arr(0) As Object
Dim Param(0)

Set ServiceManager = CreateObject("com.sun.star.ServiceManager")
Set Desktop = ServiceManager.createInstance("com.sun.star.frame.Desktop")
Set Param(0) = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
Param(0).Name = "Hidden"        ' делаем все скрытно :)
Param(0).Value = True
fn = Replace(fn, "\", "/") & "/" ' конвертируем путь в формат ООО
Set Document = Desktop.LoadComponentFromURL("file:///" & fn, "_blank", 0, Param)

...

Set Arr(0) = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
Arr(0).Name = "Wait"
Arr(0).Value = True
Document.Print Arr()

компилятор ругается на последнюю строку, несоответствие типов. Если скобки убрать то компилирует, но тогда
при выполнении вылазит ошибка. 

Решил пока так:
Set oDisp = ServiceManager.createInstance("com.sun.star.frame.DispatchHelper")
Set Arr(0) = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
Arr(0).Name = "Wait"
Arr(0).Value = True

oDisp.ExecuteDispatch Document.getCurrentController.GetFrame, ".uno:PrintDefault", "", 0, Arr


но вариант с Document.Print кажется быстрее и не выводит лишних сообщений.
Вопрос наверно больше касается VB6, но вдруг у кого мысли есть как решить :)
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут


bigor

Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут