Как закрыть документ сразу после отправки на печать?

Автор rizhik.ilya, 4 июня 2010, 11:32

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

rizhik.ilya

Вызываю метод Print(), а сразу же за ним Close(). В результате Close() вызывает Exception. Как сделать так, чтобы документ закрылся автоматом, после того, как задание печати будет завершено.

dr.Faust

Свобода информации - свобода личности!

Рыбка Рио

#2
Вот такой вариант:

REM  *****  BASIC  *****
Global oListenerx1 As Variant
Global Statex1 As Integer

Sub Main
Statex1=0
Docx1=ThisComponent
oListenerx1=CreateUnoListener("PJLx1_", "com.sun.star.view.XPrintJobListener")
Docx1.addPrintJobListener(oListenerx1)
While Statex1=0
   Wait 1000
Wend
Docx1.removePrintJobListener(oListenerx1)
Wait 1000
Docx1.close(TRUE)
End Sub

Sub PJLx1_printJobEvent(evt)
   If evt.State=1 then Statex1=1
End Sub

Sub PJLx1_disposing
End Sub


Только нужно подумать, что будет , если отменить печать, получится бесконечный цикл? Наверное, можно лучше как-нибудь сделать. Вот пример, из которого это получилось: OpenOffice.org Forum :: OLE Automation -> Get Print Status.
ubuntu 12.04 + LibO3.6.0

Рыбка Рио

Нет, бесконечный цикл не получается, всё в порядке.
Форматирование выполнено: evt.State=0
Печать отменена: evt.State=3
Печать завершена: evt.State=1

После отмены печати всё равно идёт "печать завершена".
ubuntu 12.04 + LibO3.6.0

rizhik.ilya

Цитата: Трио от  4 июня 2010, 14:04
Нет, бесконечный цикл не получается, всё в порядке.
Форматирование выполнено: evt.State=0
Печать отменена: evt.State=3
Печать завершена: evt.State=1

После отмены печати всё равно идёт "печать завершена".
Да, только вот все усложняется тем, что это я дергаю из 1С 7.7.
А там с событие походу не получится работать.

dr.Faust

Запускайте макрос в Ооо. Кто запрещает передать управление?
Свобода информации - свобода личности!

rizhik.ilya

Цитата: dr.Faust от  4 июня 2010, 20:07
Запускайте макрос в Ооо. Кто запрещает передать управление?
Дело в том, что файлик должен создаваться на определенное время, затем с ним происходить определенные действия, а именно вставка картинки, отправка на печать с возможностью смены параметров печати пользователем и сразу же закрываться (чтобы не напечатали еще раз). После этого удаляться. Поэтому хранить файл с макросом не вариант. Если же программно формировать макрос и вставлять в файл, то из 1С (даже с использованием скриптов) это сильно навернуто будет... Все равно спасибо.

dr.Faust

Сделайте шаблон с макросом и создавайте файлик на основе этого шаблона.
Свобода информации - свобода личности!

ishayahu

А куда в данном случае стоит вставить Docx1.print(Dummy()) ?
WinXP - OO3.3/LibreOffice3.3

smaharbA

#9
вобщето у метода принт есть параметры

к слову по поводу печати из ооо есть застарелая проблема при отмене очереди.
Я конечно далек от мысли... (с)

ishayahu

Правильно ли я понял, что если я установлю параметр Wait в True, то я могу сразу после Docx1.print() вызвать Docx1.close(TRUE)?
WinXP - OO3.3/LibreOffice3.3

smaharbA

Я конечно далек от мысли... (с)

ishayahu

WinXP - OO3.3/LibreOffice3.3