Leere Seite drucken

Ich habe einen HP Drucker der wegen EU Vorgaben seit eienm Update nach 8 h in den Ruhezustand wechselt, dann empfängt er aber auch keine Faxe mehr.
Mit der Zeile
„C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe“ /p /h „C:\PDF\Dokument.pdf“
schaffe ich es in der cmd alsi Eingabeaufforderung eine leere Seite zu drucken, wenn ich das alle 6 h auslösen könnte hätte ich eienen Workaround.
Mein Versuch mit einem Skript schlägt fehl weil ich es wohl nicht richtig hinkriege.

<?php "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" /p /h "C:\PDF\Dokument.pdf" So sieht mein Skript aus Die Rückmeldung lautet
Parse error: syntax error, unexpected '"C:\PDF\Dokument.pdf"' (T_CONSTANT_ENCAPSED_STRING) in C:\ProgramData\Symcon\scripts\45050.ips.php on line 3
Leider kenne ich mit Scripten noch nicht aus, kann mir jemand helfen? Ich würde dann ein Ereignis definieren, damit das Skript alle 6 h startet. Liebe Grüße Arnd

Das kann so nicht funktionieren. Bitte schaue Dir das mal an:

PHP: Funktionen zur Programmausführung - Manual

Gruß

Burkhard

Lieber Burkhard,
Besten Dank für diese Information! Verstehe ich das richtig dass ich hier also noch einen besonderen PHP Befehl benötige?
This will execute $cmd in the background (no cmd window) without PHP waiting for it to finish, on both Windows and Unix.

<?php function execInBackground($cmd) { if (substr(php_uname(), 0, 7) == "Windows"){ pclose(popen("start /B ". $cmd, "r")); } else { exec($cmd . " > /dev/null &"); } } ?>

Wäre dieses exec in background der richtige Weg? Was ich leider aus der Beschreibung nicht ganz verstehe ist wie die genaue Phrasenlogik dann sein muss also wie trenne ich Funktion und Befehl? Kennst du dich damit zufällig besser aus als ich und kannst du mir ein wenig weiterhelfen?
Wäre das ganze Manöver eventuell mit einer Skripexe also einem entsprechenden Befehl der ja bereits implementiert scheint einfacher? Liebe Grüße Arnd

Also so genau stecke ich da jetzt auch nicht in der Tiefe. Warum willst Du aber das über php lösen?

Windows hat doch seinen eigenen Taskplaner, über den sich Batch-Dateien in geplanten Zeitabständen automatisiert starten lassen?

Gestartet wird er mit dem Befehl: taskschd.msc in der Eingabe-Aufforderung.

Deinen Druckbefehl packst Du in eine Batch-Datei (z.B. „Druck.bat“) und planst dann die Ausführung der selbigen über den Taskplaner.

Mich gerade nochmal da rein gefuchst und im Netz folgende Lösung gefunden:

<?php    ### batch.php ###

error_reporting(E_ALL);

$batch = 'C:\PDF\druck.bat';
  $res   = exec("c:\windows\system32\cmd.exe /c "$batch"", $_output, $error);

echo "<pre>\r\n";
  echo "Result: $res \r\n";
  echo "Error: $error \r\n";

foreach ($_output as $line)
  {
      echo htmlspecialchars($line)."\r\n";
  }
  echo "<pre>\r\n";

In die druck.bat gibst Du den Aufruf des Druckens an. Also:
C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" /p /h "C:\PDF\Dokument.pdf"

Allerdings wird das evtl. Probleme bereiten, aufgrund der Leerzeichen in den Verzeichnis-Namen. Also besser eine Verknüpfung von Adobe Reader in das Verzeichnis setzen, wo die .bat Datei liegt.
Könnte dann z.B. so aussehen:

C:\PDF\Reader.lnk" /p /h "C:\PDF\Dokument.pdf"

„Reader.lnk“ wäre hier die Verknüpfung zu: C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe"

Gruß

Burkhard

Lieber Burkhard,
besten Dank für Deine Mühe, ich bin gerade erst dazu gekommen das auszuprobieren und ja es funktioniert!

Liebe Grüße
Arnd