Imprima cualquier tipo de documento usando Delphi

Si tu Delphi la aplicación 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, mejor aún, podemos decirle a Windows, aquí hay un archivo PDF, envíelo a la aplicación asociada / encargada de imprimir archivos PDF.

instagram viewer

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 archivo 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 lanzar una aplicación, abra el Explorador de Windows, inicie una búsqueda que comience en el directorio especificado y, lo que es de mayor interés para nosotros, imprima 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, y 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. Ponga las siguientes dos líneas en el controlador uniforme OnCreate del formulario:
    // tener impresoras disponibles en el cuadro combinadocboPrinter. Artículos. Asignar (impresora. Impresoras);// preseleccione la impresora predeterminada / activacboPrinter. ItemIndex: = impresora. 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.

instagram story viewer