lazarus + openoffice

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Re: lazarus + openoffice

Сообщение Astralis » 30.12.2009 13:09:07

в документации за распечатку отдельных страниц отвечает параметр Pages
Pages (String) – содержат список страниц, которые будут напечатаны (синтаксис как определено в диалоге печати).
Аватара пользователя
Astralis
новенький
 
Сообщения: 45
Зарегистрирован: 06.06.2007 20:33:05
Откуда: Tvercity-Annet

Re: lazarus + openoffice

Сообщение sant » 30.12.2009 15:10:42

Может через диспетчера попытаться, ввиду того, что Pages тоже не работает.
sant
новенький
 
Сообщения: 23
Зарегистрирован: 23.11.2009 21:52:42

Re: lazarus + openoffice

Сообщение Astralis » 30.12.2009 16:00:49

А может все из-за того что вы используете Copies вместо CopyCount?
http://api.openoffice.org/docs/common/r ... tions.html
Аватара пользователя
Astralis
новенький
 
Сообщения: 45
Зарегистрирован: 06.06.2007 20:33:05
Откуда: Tvercity-Annet

Re: lazarus + openoffice

Сообщение sant » 30.12.2009 18:23:06

Код: Выделить всё
  PrintPar1 := VarArrayCreate([0, 2], varVariant);
  PrintPar1[0]:= MakePropertyValue('"Copies"','1');
  PrintPar1[1]:= MakePropertyValue('"RangeText"','"2"');
  PrintPar1[2]:= MakePropertyValue('"Collate"','true');

    Frame:= Document.getCurrentController.getFrame;
    Dispatcher:= Server.createInstance('com.sun.star.frame.DispatchHelper');
    Dispatcher.executeDispatch(Frame,'.uno:Print', '', 0, PrintPar1);


Так тоже отчего-то не работает!
Openoffice - 3.1.0, XP SP3
Lazarus 9.28 beta (2.2.4)

Добавлено спустя 2 минуты 15 секунд:
Если же написать так, тоже не работает. Единственное вызавается диалог печати, но в него параметры не передаются!
Код: Выделить всё
  PrintPar1 := VarArrayCreate([0, 0], varVariant);
  PrintPar1[0]:= MakePropertyValue('RangeText','2');

    Frame:= Document.getCurrentController.getFrame;
    Dispatcher:= Server.createInstance('com.sun.star.frame.DispatchHelper');
    Dispatcher.executeDispatch(Frame,'.uno:Print', '', 0, PrintPar1);


Добавлено спустя 15 часов 50 минут 53 секунды:
:!: Помогите пожалуйста :!:
sant
новенький
 
Сообщения: 23
Зарегистрирован: 23.11.2009 21:52:42

Re: lazarus + openoffice

Сообщение sant » 10.01.2010 23:38:12

А у кого-нибудь работает печать из Openoffice под управлением Lazarus.

Напишите рабочий вариант кода! :!:
sant
новенький
 
Сообщения: 23
Зарегистрирован: 23.11.2009 21:52:42

Re: lazarus + openoffice

Сообщение sant » 15.01.2010 13:12:19

Рискну предположить - неправильно (не та кодировка) передачи параметров в OpenOffice Writer/
sant
новенький
 
Сообщения: 23
Зарегистрирован: 23.11.2009 21:52:42

Re: lazarus + openoffice

Сообщение xcod » 18.01.2010 06:55:16

sant писал(а):Если же написать так, тоже не работает. Единственное вызавается диалог печати, но в него параметры не передаются!
Код: Выделить всё
  PrintPar1 := VarArrayCreate([0, 0], varVariant);
  PrintPar1[0]:= MakePropertyValue('RangeText','2');

    Frame:= Document.getCurrentController.getFrame;
    Dispatcher:= Server.createInstance('com.sun.star.frame.DispatchHelper');
    Dispatcher.executeDispatch(Frame,'.uno:Print', '', 0, PrintPar1);



чтобы не выдавался диалог печати сделайте так:
Код: Выделить всё
Dispatcher.executeDispatch(Frame,'.uno:PrintDefault', '', 0, PrintPar1);

будет сразу идти печатать на принтер используемый по умолчанию в системе
xcod
постоялец
 
Сообщения: 108
Зарегистрирован: 07.08.2009 12:37:23

Re: lazarus + openoffice

Сообщение sant » 18.01.2010 13:00:46

Код: Выделить всё
Dispatcher.executeDispatch(Frame,'.uno:PrintDefault', '', 0, PrintPar1);


Сразу печатает, но параметры для печати почему-то не воспринимаются!
Неужели никто не выводит на печать определенные листы из документа, поделитесь...
sant
новенький
 
Сообщения: 23
Зарегистрирован: 23.11.2009 21:52:42

Re: lazarus + openoffice

Сообщение xcod » 18.01.2010 13:15:26

по моему в параметрах должно быть вот так вот:
Код: Выделить всё
PrintPar[1]:=MakePropertyValue('CopyCount', 1);
xcod
постоялец
 
Сообщения: 108
Зарегистрирован: 07.08.2009 12:37:23

Re: lazarus + openoffice

Сообщение sant » 18.01.2010 14:11:30

Если
Код: Выделить всё
function MakePropertyValue(PropertyName, PropertyValue: variant):variant;
var
Structure: variant;
begin
Structure:= Server.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
Structure.Name:= PropertyName;
Structure.Value:= PropertyValue;
Result:= Structure;
end;

Тогда, можно
Код: Выделить всё
Frame:= Document.getCurrentController.getFrame;
Dispatcher:= Server.createInstance('com.sun.star.frame.DispatchHelper');

PrintPar1 := VarArrayCreate([0, 0], varVariant);
PrintPar1[0]:= MakePropertyValue('RangeTex', 2);
Dispatcher.executeDispatch(Frame, '.uno:Print', '', 0, PrintPar1);

Все-равно не работает!
sant
новенький
 
Сообщения: 23
Зарегистрирован: 23.11.2009 21:52:42

Re: lazarus + openoffice

Сообщение xcod » 18.01.2010 14:27:02

попробуйте печать не через диспетчер:
Код: Выделить всё
PrintPar := VarArrayCreate([0, 0], varVariant);
PrintPar[0]:= MakePropertyValue('CopyCount', 1);
Document.Print(PrintPar);


Добавлено спустя 16 часов 18 минут 3 секунды:
Свойство CopyCount определяет кол-во копий документа
Код: Выделить всё
PrintPar[0]:=MakePropertyValue('CopyCount', 1);

а свойство Pages определяет страницы для печати
Код: Выделить всё
PrintPar[1]:=MakePropertyValue('Pages', '1-3,10-15,25'); // страницы разделяются "," или ";" точно не помню проверьте сами
xcod
постоялец
 
Сообщения: 108
Зарегистрирован: 07.08.2009 12:37:23

Re: lazarus + openoffice

Сообщение sant » 21.01.2010 16:44:21

Все крылось в функцие формирования параметров:
Код: Выделить всё
function MakePropertyValue(PropertyName, PropertyValue: variant):variant;

Код: Выделить всё
PrintPar := VarArrayCreate([0, 1], varVariant);
PrintPar[0]:= MakePropertyValue('Pages', '2,3,4');
PrintPar[1]:= MakePropertyValue('CopyCount',i);
Document.Print(PrintPar);

Все работает!
sant
новенький
 
Сообщения: 23
Зарегистрирован: 23.11.2009 21:52:42

Пред.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 37

Рейтинг@Mail.ru