Drucken Sie verschiedene Dokumenttypen aus Delphi

Wenn Ihre Delphi-Anwendung mit verschiedenen Dateitypen arbeiten muss, besteht eine der Aufgaben, die Sie möglicherweise für Ihre Anwendung haben, darin, dem Benutzer der Anwendung das Drucken einer Datei unabhängig vom Dateityp zu ermöglichen.

Die meisten dokumentenorientierten Anwendungen wie MS Word, MS Excel oder Adobe können problemlos mit diesem Programm erstellte Dokumente drucken. Beispielsweise speichert Microsoft Word den Text, den Sie in Dokumenten mit der Erweiterung DOC schreiben. Da Word den "unformatierten" Inhalt einer DOC-Datei ermittelt, weiß es, wie DOC-Dateien gedruckt werden. Gleiches gilt für alle "bekannten" Dateitypen, die druckbare Informationen enthalten.

Was ist, wenn Sie verschiedene Arten von Dokumenten / Dateien aus Ihrer Anwendung drucken müssen? Können Sie wissen, wie die Datei an den Drucker gesendet wird, damit sie korrekt gedruckt wird??

Drucken aus Delphi

Wir können Windows fragen, welche Anwendung zum Beispiel eine PDF-Datei drucken kann. Oder, noch besser, wir können Windows mitteilen, dass es sich hier um eine PDF-Datei handelt, die an die Anwendung gesendet wird, die für das Drucken von PDF-Dateien zuständig ist.

Öffnen Sie dazu den Windows Explorer und navigieren Sie zu einem Verzeichnis, das einige druckbare Dateien enthält. Wenn Sie mit der rechten Maustaste auf eine Datei in Windows Explorer klicken, finden Sie für die meisten Dateitypen auf Ihrem System den Befehl "Drucken". Wenn Sie den Befehl "Shell drucken" ausführen, wird die Datei an den Standarddrucker gesendet. Genau das möchten wir: Rufen Sie für einen Dateityp eine Methode auf, die die Datei zum Drucken an die zugehörige Anwendung sendet. Die Funktion, die wir suchen, ist die ShellExecute-API-Funktion.

ShellExecute: Print / PrintTo

ShellExecute kann jedoch noch viel mehr. Mit ShellExecute können Sie eine Anwendung starten, den Windows Explorer öffnen, eine Suche starten, die im angegebenen Verzeichnis beginnt, und - was für uns am interessantesten ist - die angegebene Datei drucken.

Geben Sie den Drucker an

Mit dem obigen Aufruf wird ein Dokument "document.doc" im Stammverzeichnis des Laufwerks C an den Windows-Standarddrucker gesendet. ShellExecute verwendet immer den Standarddrucker für die Aktion "Drucken". Was passiert, wenn Sie auf einem anderen Drucker drucken müssen, und wenn Sie dem Benutzer erlauben möchten, den Drucker zu wechseln??

Der PrintTo Shell-Befehl

Vor dem Kopieren und Einfügen: Mit der globalen Druckervariable (TPrinter-Typ), die in allen Delphi-Programmen verfügbar ist, können Sie alle von einer Anwendung ausgeführten Druckvorgänge verwalten. Der Drucker wird in der Unit "printers" definiert, ShellExecute in der Unit "shellapi".

  1. Legen Sie eine TComboBox in einem Formular ab. Nennen Sie es "cboPrinter". Setzen Sie Style auf csDropDownLidt
  2. Fügen Sie die nächsten beiden Zeilen in den OnCreate Even-Handler des Formulars ein:
     // Verfügbare Drucker im Kombinationsfeld habencboPrinter.Items.Assign (printer.Printers);// wähle den Standard / aktiven Drucker vorcboPrinter.ItemIndex: = printer.PrinterIndex;
Verwenden Sie diese Option, um einen beliebigen Dokumenttyp auf einem bestimmten Drucker zu drucken

Hinweis: Für einige Dokumenttypen ist keine Anwendung zum Drucken verfügbar. Bei einigen ist die Aktion "printto" nicht angegeben.