API para conductores

El SDK del controlador de PrintFactory le permite crear sus propios controladores para PrintFactory. Podemos distribuirlos de forma más amplia una vez que los hayamos validado.

Un controlador es una DLL (Windows) o dylib (macOS) que expone una API predefinida a PrintFactory. Esta API proporciona a PrintFactory datos sobre las capacidades de la impresora o de la cortadora, y define cómo debe enviarse la información para imprimir, etc. Para las versiones validadas, también proporcionará la clave de licencia.

Exportación de DLL

El conductor exporta de tres maneras;

  • ListModels : esto es lo que usamos cuando iteramos a través de la carpeta de controladores para cada controlador. Este método proporciona una lista de nombres de impresoras/cortadoras para el controlador, que aparecerán en el cuadro de diálogo Añadir dispositivo de salida.
  • PrinterInitialize : es lo que utilizamos para crear una instancia de una impresora o cortadora. Permanece «en vivo» mientras el componente RIP o PrintStation esté en funcionamiento. La instancia devolverá una serie de métodos para que PrintFactory los utilice.
  • PrinterTerminate : esto es lo que usamos para borrar una instancia, cuando ya no hay necesidad de usar PrintStation en ese momento.

Métodos de instancia

La lista de métodos devueltos por PrinterInitialize comprende:

  • Información : es lo que utilizamos para consultar las capacidades del dispositivo, obtener un script de interfaz de usuario, el conjunto de tintas, las bandejas, etc. Sin un XML de configuración, obtendrá los valores predeterminados; con un XML de configuración (extraído del script de la interfaz de usuario) obtendrá detalles específicos del modo de impresión.
  • DisposeInfo : Se utiliza para borrar los datos resultantes de la llamada a Info.
  • CreateSession : PrintFactory llama a esto al inicio de un trabajo. El método CreateSession devolverá una lista de métodos que el sistema puede utilizar para pasar los datos de impresión y/o corte al controlador.
  • DisposeSession : es lo que utilizamos para eliminar la sesión creada por CreateSession después de que un trabajo haya terminado o sea abortado.
  • PrinterStatus : Método opcional que se llama periódicamente para consultar los niveles de tinta, el estado de error u otra información de estado del dispositivo. Esta información es visible tanto en el RIP como en la interfaz de la nube.
  • JobStatus : Método opcional para proporcionar el consumo de tinta y otra información de estado de la impresora sobre el trabajo que se ha procesado. Si este método no está disponible, el sistema sintetizará la información de consumo basándose en los detalles proporcionados por la llamada de información.
  • PrinterQuery : API opcional de propósito general para poder acceder a otras partes del dispositivo además de la impresión o el corte, como espectrómetros fotográficos, grapadoras, carpetas, etc.
  • GetPrivateCacheData : Método opcional para obtener información de estado persistente (que es almacenada por el controlador para retener información sobre, por ejemplo, los modos disponibles en el dispositivo conectado) y almacenarla en el archivo de configuración que se almacena en la nube y en las copias de seguridad.
  • SetPrivateCacheData : Método opcional para volver a escribir información de estado persistente desde la nube o una copia de seguridad.

Interfaz de usuario

La interfaz de usuario se crea dinámicamente a partir del script de interfaz de usuario basado en XML. El guión dicta qué elementos deben presentarse al usuario, para construir un modo de impresión, y cuáles de estos elementos pueden ser modificados posteriormente por un operador sin influir en el color (o en cualquier otro aspecto de calidad del trabajo).

Después de presentar la interfaz de usuario, la configuración elegida se extrae y se almacena en un XML de configuración que se pasa a la llamada de información. A cambio, generamos la lista de tintas, la resolución, la profundidad de bits y otros parámetros necesarios para RIP un trabajo en el formato que necesita el controlador.

Los detalles sobre el formato y la estructura del XML de la interfaz de usuario están documentados en la documentación del XML de la interfaz de usuario del controlador.

Métodos de la sesión

El método CreateSession devuelve una lista de métodos que permiten a PrintFactory pasar los datos de impresión o corte al controlador (todos ellos son opcionales). Los métodos individuales están documentados en la documentación de la API del controlador.

El RIP, spooler o PrintStation ejecutará la siguiente secuencia de llamada para pasar un trabajo al controlador:

Imprimir

  • Inicializar
  • JobStart
  • for( cada capa en cada página )
    • Inicio de página
    • RasterStart
    • para( cada plano en cada línea )
      • ProcessRawBuffer
    • RasterEnd
    • PageEnd
  • JobEnd
  • Terminar

Cortar

  • Inicializar
  • JobStart
  • for( cada página )
    • RegistrationMarks (si está presente)
    • Inicio de página
    • VectorStart
    • Mezcla de llamadas a continuación para construir contornos
      • SetTool
      • Mover
      • Línea
      • Vértice
      • PenUp
      • PenDown
      • CurveStart
      • CurveEnd
    • VectorEnd
    • PageEnd
    • Transporte
  • JobEnd
  • Terminar

Imprimir y cortar

  • Inicializar
  • JobStart
  • for( cada capa en cada página )
    • RegistrationMarks (si está presente)
    • Inicio de página
    • RasterStart
    • para( cada plano en cada línea )
      • ProcessRawBuffer
    • RasterEnd
    • VectorStart
    • Mezcla de llamadas a continuación para construir contornos
      • SetTool
      • Mover
      • Línea
      • Vértice
      • PenUp
      • PenDown
      • CurveStart
      • CurveEnd
    • VectorEnd
    • PageEnd
    • Transporte
  • JobEnd
  • Terminar

Ejemplo

El siguiente ejemplo demuestra cómo crear un controlador que creará archivos TIFF como salida. La muestra puede ser clonada desde GIT : https://bitbucket.org/aurelon/ada.git y contiene el driver de muestra así como un host bare-bones que puede ser usado en lugar de PrintFactory RIP para hacer los pasos iniciales.