Imprimer différents types de documents depuis Delphi

Si votre application Delphi doit fonctionner sur différents types de fichiers, l'une des tâches que vous pourriez avoir pour votre application est de permettre à l'utilisateur de l'application d'imprimer un fichier, quel que soit le type de fichier..

La plupart des applications orientées document, comme MS Word, MS Excel ou Adobe, peuvent facilement imprimer des documents créés dans ce programme. Par exemple, Microsoft Word enregistre le texte que vous écrivez dans des documents avec l'extension DOC. Étant donné que Word détermine le contenu "brut" d'un fichier .DOC, il sait comment imprimer les fichiers .DOC. Il en va de même pour tout type de fichier "connu" contenant des informations imprimables.

Que faire si vous devez imprimer différents types de documents / fichiers à partir de votre application? Pouvez-vous savoir comment envoyer le fichier à l'imprimante pour qu'il soit correctement imprimé?

Imprimer depuis Delphi

Nous pouvons demander à Windows quelle application peut imprimer, par exemple, un fichier PDF. Ou, mieux encore, nous pouvons dire à Windows, voici un fichier PDF, envoyez-le à l'application associée / en charge de l'impression des fichiers PDF.

Pour ce faire, ouvrez l'Explorateur Windows, accédez à un répertoire contenant des fichiers imprimables. Pour la plupart des types de fichiers sur votre système, lorsque vous cliquez avec le bouton droit sur un fichier dans l'Explorateur Windows, vous localisez la commande "Imprimer". L'exécution de la commande Print shell entraînera l'envoi du fichier à l'imprimante par défaut. Eh bien, c'est exactement ce que nous voulons: pour un type de fichier, appelez une méthode qui enverra le fichier à l'application associée pour l'impression. La fonction que nous recherchons est la fonction API ShellExecute.

ShellExecute: Print / PrintTo

Cependant, ShellExecute peut faire beaucoup plus. ShellExecute peut être utilisé pour lancer une application, ouvrir l'Explorateur Windows, lancer une recherche commençant dans le répertoire spécifié et - ce qui nous intéresse le plus - imprimer le fichier spécifié.

Spécifiez l'imprimante

En utilisant l'appel ci-dessus, un document "document.doc" situé à la racine du lecteur C sera envoyé à l'imprimante par défaut de Windows. ShellExecute utilise toujours l'imprimante par défaut pour l'action "imprimer". Que faire si vous devez imprimer sur une autre imprimante, que faire si vous souhaitez autoriser l'utilisateur à changer d'imprimante?

La commande PrintTo Shell

Avant de copier et coller: la variable globale Imprimante (type TPrinter) disponible dans tous les programmes Delphi peut être utilisée pour gérer toute impression effectuée par une application. L'imprimante est définie dans l'unité "imprimantes", ShellExecute est définie dans l'unité "shellapi".

  1. Déposez une TComboBox sur un formulaire. Nommez-le "cboPrinter". Définir le style sur csDropDownLidt
  2. Placez les deux lignes suivantes dans le gestionnaire OnCreate pair du formulaire:
     // avoir des imprimantes disponibles dans la liste déroulantecboPrinter.Items.Assign (printer.Printers);// présélectionne l'imprimante par défaut / activecboPrinter.ItemIndex: = printer.PrinterIndex;
utiliser pour imprimer tout type de document sur une imprimante spécifiée

Remarque: certains types de documents n'ont pas d'application associée à l'impression. Certains n'ont pas l'action "printto" spécifiée.