2012-04-04 7 views
3

Ich habe ein paar Drucken in As3, offensichtlich mit flash.printing.PrintJob, aber ich habe ein Problem damit.PrintJob an den Drucker gesendet, obwohl ich nie send()

Ich muss überprüfen, dass die vom Benutzer im Druckdialog durch PrintJob.start() angegebenen Einstellungen mit einigen in der Datenbank gespeicherten übereinstimmen, und es gibt keine Möglichkeit, diese Informationen zu erhalten, außer PrintJob.start() aufzurufen .

Wenn die Seiteneinstellungen ungültig sind, rufe ich weder addPage() noch send() auf, aber nach einigen Sekunden (ungefähr 15) wird ein leeres Dokument gedruckt.

Irgendeine Idee? Wie kann ich einen PrintJob stornieren? In AIR gibt es ein PrintJob.terminate(), aber ich ziele auf Flash.

Vielen Dank!

+0

Diese leere Seite ... es könnte eine blöde Frage sein, aber, klicken Sie auf "ok" auf dem Druckdialog, der kommt oder abbrechen? –

+0

Ich kann Ihr Problem nicht reproduzieren. Wetter Ich klicke auf "OK" oder "Abbrechen", und wetter ich ausdrücklich den Druckauftrag in der VM frei/lösche oder nicht, solange ich keine Seiten an den Job sende es nach einigen Sekunden abbricht und nicht druckt etwas. Es könnte sich um ein druckerspezifisches Problem handeln, mit dem wir es zu tun haben. In diesem Fall wird keine Menge an AS3-Code im Universum Ihr Problem lösen. –

+0

@Ascension Systems: Ich klicke OK, wenn ich abbrechen, funktioniert es richtig. Ich werde in ein paar verschiedenen Betriebssystemen und mit verschiedenen Treibern testen. Ich hoffe es ist ein Treiberfehler: D – alcuadrado

Antwort

0

Ich bin ein wenig verwirrt, was Sie eigentlich zu tun versuchen, aber können Sie es so machen? (Von Printjob-docs, die Startfunktion Beispiel)

var myPrintJob:PrintJob = new PrintJob(); 
if(myPrintJob.start()) { 
// addPage() and send() statements here 
} 

Auf diese Weise können Sie die Einstellungen überprüfen können, wenn Sie senden nicht() es wirklich shouldnt Druck. (Sind Sie sicher, dass Sie nicht irgendwo an einer alten Stelle in Ihrem Code gesendet haben ??) Eine mögliche Lösung (obwohl nicht die beste, sollte es funktionieren) ist, Ihren Druckjob zu zwingen, zurückgesetzt, wenn seine Einstellungen nicht Ihren Vorlieben entsprechen, so ;

Wenn das obige nicht hilft, bitte Snippets und weitere Details liefern. Viel Glück!

+0

Ich habe diesen Code nicht zur Hand. Ich habe viele Orte im Internet gefunden, wo gesagt wird, dass es eine maximale Zeit von start() bis send() gibt, und wenn sie überschritten wird, würde der Druckjob trotzdem gesendet werden. Es klingt verrückt, fast unglaublich, aber leider ist es wahr. – alcuadrado