Ich habe eine Python-Anwendung, die wiederholt ausgeführt wird. Es speichert ein PDF als Datei und druckt es dann aus. Wenn das Drucken beendet wird, löscht es die Datei.Drucken Sie ein PDF und löschen Sie die Datei, wenn der Druckvorgang beendet ist
Meine aktuelle Lösung (für den Druck und löscht Teil), ist dies:
win32api.ShellExecute(0, "print", file_path, None, ".", 0)
time.sleep(10)
os.remove(self.options.dest_name)
time.sleep(10)
ein Trick ist dem Druckprozess, die Zeit zu geben, bevor das Löschen von Dateien auszuführen. Ohne es öffnet sich Acrobat Reader (es öffnet sich trotzdem) und warnt, dass es die Datei nicht finden kann. Dies liegt daran, dass die Dateientfernung bereits erfolgt ist.
Die Frage ist:
wie kann ich es ohne diese unzuverlässig Trick? Am besten wäre es, einen Handler für den Druckvorgang zu haben und eine Information über den Druckstatus zu bekommen: Ich warte darauf, dass es fertig ist und ich lösche die Datei.
wäre es noch besser, wenn Acrobat Reader nicht öffnen würde, aber das ist kein großes Problem.
EDIT: Ich habe versucht, als Standard-PDF-Reader zu Foxit Reader Schalten und jetzt ist es nicht öffnen, wenn ich nicht will. ;)
ANDERE MÖGLICHE LÖSUNG: zyklisch überprüfen, ob die Datei vorhanden ist (nicht von einem anderen Prozess verwendet wird) und wenn es wieder löschen es verfügbar ist. Wie könnte ich das in Python machen?
Ehrlich gesagt, gibt es keinen wirklichen Weg, etwas zu wissen, ob * eigentlich * gedruckt. Es gibt 100 verschiedene Probleme, die in der Druckwarteschlange auftreten können und die Ihnen nie gemeldet werden. –
@Nick Mhm, sagen wir, ich muss nur wissen, wann das Dokument an den Drucker gesendet wurde. Also kann ich es wegwerfen. – bluish