Imprima diferentes tipos de documentos desde Delphi

Si su aplicación Delphi necesita operar en varios tipos de archivos, una de las tareas que puede tener para su aplicación es permitir que el usuario de la aplicación imprima un archivo, sea cual sea el tipo de archivo.

La mayoría de las aplicaciones orientadas a documentos, como MS Word, MS Excel o Adobe, pueden imprimir fácilmente documentos creados en ese programa. Por ejemplo, Microsoft Word guarda el texto que escribe en documentos con extensión DOC. Dado que Word determina cuál es el contenido "en bruto" de un archivo .DOC, sabe cómo imprimir archivos .DOC. Lo mismo se aplica a cualquier tipo de archivo "conocido" que contenga información imprimible..

¿Qué sucede si necesita imprimir varios tipos de documentos / archivos desde su aplicación? ¿Puede saber cómo enviar el archivo a la impresora para que se imprima correctamente??

Imprimir desde Delphi

Podemos preguntarle a Windows qué aplicación puede imprimir, por ejemplo, un archivo PDF. O, aún mejor, podemos decirle a Windows, aquí hay un archivo PDF, envíelo a la aplicación asociada / encargada de imprimir archivos PDF.

Para hacer esto, abra el Explorador de Windows, navegue a un directorio que contenga algunos archivos imprimibles. Para la mayoría de los tipos de archivos en su sistema, cuando hace clic derecho en un archivo en el Explorador de Windows, encontrará el comando "Imprimir". Al ejecutar el comando Imprimir shell, el archivo se enviará a la impresora predeterminada. Bueno, eso es exactamente lo que queremos: para un tipo de archivo, llame a un método que enviará el archivo a la aplicación asociada para su impresión. La función que buscamos es la función ShellExecute API.

ShellExecute: Print / PrintTo

Sin embargo, ShellExecute puede hacer mucho más. ShellExecute se puede usar para iniciar una aplicación, abrir el Explorador de Windows, iniciar una búsqueda que comience en el directorio especificado y, lo que es de mayor interés para nosotros, imprimir el archivo especificado.

Especificar impresora

Mediante la llamada anterior, se enviará un documento "document.doc" ubicado en la raíz de la unidad C a la impresora predeterminada de Windows. ShellExecute siempre usa la impresora predeterminada para la acción "imprimir". ¿Qué sucede si necesita imprimir en una impresora diferente? ¿Qué sucede si desea permitir que el usuario cambie la impresora??

El comando PrintTo Shell

Antes de copiar y pegar: la variable global Impresora (tipo TPrinter) disponible en todos los programas Delphi se puede usar para administrar cualquier impresión realizada por una aplicación. La impresora se define en la unidad "impresoras", ShellExecute se define en la unidad "shellapi".

  1. Suelta un TComboBox en un formulario. Nómbrelo "cboPrinter". Establecer estilo en csDropDownLidt
  2. Coloque las siguientes dos líneas en el controlador uniforme OnCreate del formulario:
     // tener impresoras disponibles en el cuadro combinadocboPrinter.Items.Assign (printer.Printers);// preseleccione la impresora predeterminada / activacboPrinter.ItemIndex: = printer.PrinterIndex;
se utiliza para imprimir cualquier tipo de documento en una impresora especificada

Nota: algunos tipos de documentos no tienen una aplicación asociada con la impresión. Algunos no tienen la acción "printto" especificada.