문서가로드 된 Java 애플릿에 대한 작업을하고 있습니다. 이 애플릿에는 기본적으로 문서의 인쇄 과정에 필요한 사용자 정의 "인쇄"버튼이 있습니다. (?)이이 버튼을 누른 후 실행되는 코드입니다executeDispatch synchronous?
PropertyValue[] printProperties = new PropertyValue[1];
printProperties[0] = new PropertyValue();
printProperties[0].Name = "Print";
printProperties[0].Value = new Boolean(true);
xDispatchProvider = (XDispatchProvider)UnoRuntime.queryInterface (XDispatchProvider.class, xFrame);
dispatcher.executeDispatch(xDispatchProvider, ".uno:Print","_self", 0, printProperties);
someOtherProcess();
이 코드는 예상 된 동작입니다 기본 인쇄 대화 상자를 열고, 지금까지 작동합니다. 문제는 "someOtherProcess"메소드입니다. 인쇄 대화 상자가 "인쇄"단추를 누르거나 인쇄 대화 상자를 취소하거나 닫으면 인쇄 대화 상자가 닫힌 직후에이 메서드를 실행해야합니다.
executeDispatch는 async이므로 PropertyValue []의 "SynchronMode"를 사용하여 동기화하지 않으려 고 시도했습니다. 성공하지 못했습니다.
인쇄 프로세스가 시작될 때 또는 취소 될 때 발생하는 인쇄 이벤트를 수신하는 방법을 발견했습니다. 이는 전체 코드입니다 :
은 "PrintJobEvent 클래스"PropertyValue[] printProperties = new PropertyValue[1];
printProperties[0] = new PropertyValue();
printProperties[0].Name = "Print";
printProperties[0].Value = new Boolean(true);
xDispatchProvider = (XDispatchProvider)UnoRuntime.queryInterface (XDispatchProvider.class, xFrame);
dispatcher.executeDispatch(xDispatchProvider, ".uno:Print","_self", 0, printProperties);
XPrintJobBroadcaster xPrintJobBroadcaster = (XPrintJobBroadcaster)UnoRuntime.queryInterface(XPrintJobBroadcaster.class, xComponent);
xPrintJobBroadcaster.addPrintJobListener(new MyPrintJobListener());
class MyPrintJobListener implements XPrintJobListener {
public void printJobEvent(PrintJobEvent printJobEvent) {
AppletLogger.log("printing");
}
public void disposing(com.sun.star.lang.EventObject eventObject) {
AppletLogger.log("disposing");
}
}
는 등 인쇄 프로세스가 완료 시작 들일 경우, 발사 취소되고 있지만, 인쇄 대화 상자가 있었는지 알 수있는 방법을 찾을 수 없습니다 취소되거나 닫히기 때문에 인쇄 이벤트가 발생하지 않습니다.
그럼 내 주요 질문은 프로그램이 인쇄 대화 상자를 닫을 때까지 기다릴 수 있도록 인쇄 대화 상자를 동기 방식으로 열 수 있습니까? 네이티브 인쇄 대화 상자의 닫기 이벤트를 수신하는 방법이 있습니까?
미리 감사드립니다.
* "나는 자바 애플릿을 만들고 있습니다."* 당신은 2 년 전입니다. [Java Plugin support deprecated] (http://www.gizmodo.com.au/2016/01/rest-in-hell-java-plug-in/) 및 [Plugin-Free Web로 이동] (https : //blogs.oracle.com/java-platform-group/entry/moving_to_a_plugin_free). –
info @ AndrewThompson에게 감사드립니다. 나는 이미 그것을 알고있었습니다. 문제는 내 회사에서 업그레이드를 원하지 않는 고객을 위해 애플릿을 사용하고 있다는 것입니다. – shittyProgram
* ".. 업그레이드를 원하지 않는 고객을 위해"* 노후화 된 고객에게 음식을 제공하는 데 드는 비용을 더 많이 내야할지, 아니면 버려야할지 결정해야합니다. 이제는 더 많은 비용이 들것입니다. –