Pages (String) – содержат список страниц, которые будут напечатаны (синтаксис как определено в диалоге печати).
lazarus + openoffice
Модератор: Модераторы
Может через диспетчера попытаться, ввиду того, что Pages тоже не работает.
- Astralis
- новенький
- Сообщения: 45
- Зарегистрирован: 06.06.2007 20:33:05
- Откуда: Tvercity-Annet
- Контактная информация:
А может все из-за того что вы используете Copies вместо CopyCount?
http://api.openoffice.org/docs/common/r ... tions.html
http://api.openoffice.org/docs/common/r ... tions.html
Код: Выделить всё
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 секунды:
А у кого-нибудь работает печать из Openoffice под управлением Lazarus.
Напишите рабочий вариант кода!
Напишите рабочий вариант кода!
Рискну предположить - неправильно (не та кодировка) передачи параметров в OpenOffice Writer/
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); будет сразу идти печатать на принтер используемый по умолчанию в системе
Код: Выделить всё
Dispatcher.executeDispatch(Frame,'.uno:PrintDefault', '', 0, PrintPar1); Сразу печатает, но параметры для печати почему-то не воспринимаются!
Неужели никто не выводит на печать определенные листы из документа, поделитесь...
по моему в параметрах должно быть вот так вот:
Код: Выделить всё
PrintPar[1]:=MakePropertyValue('CopyCount', 1);
Если
Тогда, можно
Все-равно не работает!
Код: Выделить всё
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);
Все-равно не работает!
попробуйте печать не через диспетчер:
Добавлено спустя 16 часов 18 минут 3 секунды:
Свойство CopyCount определяет кол-во копий документа
а свойство Pages определяет страницы для печати
Код: Выделить всё
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'); // страницы разделяются "," или ";" точно не помню проверьте самиВсе крылось в функцие формирования параметров:
Все работает!
Код: Выделить всё
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);
Все работает!
