Referencia de API JavaScript
Importante
La plataforma de impresión moderna es el medio preferido de Windows para comunicarse con impresoras. Se recomienda usar el controlador de clase de bandeja de entrada IPP de Microsoft, junto con aplicaciones de soporte técnico de impresión (PSA), para personalizar la experiencia de impresión en Windows 10 y 11 para el desarrollo de dispositivos de impresora.
Para obtener más información, consulte Plataforma de impresión moderna y la Guía de diseño de aplicaciones para compatibilidad con impresión.
Los fabricantes pueden usar la API de JavaScript que se presenta aquí, en combinación con un archivo bidi XML para proporcionar compatibilidad con bidi a través de una conexión USB a un dispositivo de impresión.
Para obtener más información sobre la comunicación bidi USB con un dispositivo de impresión, consulte Extensor de bidi de USB.
Bidi a través de USB
Método getSchemas
Este método controla las consultas GET bidi, como \Printer.Consumables.YellowInk:Level. El código JavaScript puede realizar consultas en la impresora mediante el bus USB y leer respuestas a medida que se devuelven.
sintaxis
function getSchemas(scriptContext, printerStream, schemaRequests, printerBidiSchemaResponses);
Parámetros (método getSchemas)
scriptContext [in] Objeto IPrinterScriptContext que proporciona acceso a los contenedores de propiedades pertinentes. printerStream
[in] Objeto IPrinterScriptableSequentialStream que permite el acceso de lectura y escritura al bus USB. schemaRequests
[in] Objeto array que contiene todas las cadenas de consulta bidi solicitadas. printerBidiSchemaResponses
[out] Objeto que usa el script para almacenar todas las respuestas a las claves de consulta.
Valores devueltos (método getSchemas)
Valor devuelto | Descripción |
---|---|
0 | El script se completó correctamente. |
1 | El dispositivo conectado no estaba listo para proporcionar información solicitada. Indica que el sistema de impresión debe llamar a la función de nuevo mediante las claves de reconsulta agregadas durante el procesamiento. |
Método setSchema
Este método controla las operaciones SET bidi. El script puede determinar el valor de esquema bidi entrante para establecer datos en el dispositivo o realizar alguna acción en el dispositivo, como los encabezados de entrada de lápiz limpios.
Si el dispositivo no está listo para procesar los datos especificados, el método puede devolver un valor de 1 para indicar que se debe reintentar la llamada después de un período de espera.
Parámetros (método setSchema)
scriptContext [in] Objeto IPrinterScriptContext que proporciona acceso a los contenedores de propiedades pertinentes. printerStream
[in] Objeto IPrinterScriptableSequentialStream que permite el acceso de lectura y escritura al bus USB. printerBidiSchemaElement
[in] Objeto IPrinterBidiSchemaElement que contiene todos los datos asociados al valor de esquema bidi que se va a establecer.
Valores devueltos (método setSchema)
Valor devuelto | Descripción |
---|---|
0 | El script se completó correctamente. |
1 | El dispositivo conectado no estaba listo para proporcionar información solicitada. Indica que el sistema de impresión debe llamar a la función de nuevo mediante el printerBidiSchemaElement proporcionado. |
Método getStatus
Este método se usa para obtener el estado no solicitado de una impresora mientras el dispositivo está imprimiendo. Solo se llama a esta función durante la impresión. El dispositivo debe proporcionar datos en el canal de lectura que este script puede interpretar en valores de esquema bidi. Dado que el canal de escritura en el dispositivo está bloqueado por los datos de impresión, aquí solo se admite el estado no solicitado.
Este método se llama repetidamente durante la impresión. Se espera que el dispositivo solo devuelva datos si está disponible y el script puede entenderlos. Si el dispositivo no admite el estado no solicitado o no es necesario llamar a esta función de nuevo, el script debe devolver un valor de 2 que indicará al subproceso de ejecución getStatus en USBMon que salga correctamente.
Parámetros (método getStatus)
scriptContext [in] Objeto IPrinterScriptContext que proporciona acceso a los contenedores de propiedades pertinentes. printerStream
[in] Objeto IPrinterScriptableSequentialStream que permite el acceso de lectura al bus USB. printerBidiSchemaResponses
[out] Objeto que usa el script para almacenar todas las respuestas a las claves de consulta.
Valores devueltos (método getStatus)
Valor devuelto | Descripción |
---|---|
0 | El script se completó correctamente. |
2 | El dispositivo conectado ya no admite el estado no solicitado y no se debe llamar a esta función de nuevo. |
Método startPrintJob
USBMon llama a este método durante StartDocPort. Llamar a startPrintJob permite al controlador modificar la secuencia de impresión o implementar un protocolo de solicitud/respuesta basado en host que se usa mientras el dispositivo de impresión imprime un trabajo. El objeto de contexto del trabajo se pasa a la función para permitir que el código javaScript del fabricante administre las propiedades del trabajo y obtenga acceso a los flujos de datos persistentes. Los datos de impresión se pasan como una matriz de JavaScript para que el código JavaScript se procese. startPrintJob también proporciona acceso al dispositivo de impresora de las maneras siguientes:
Mediante el flujo de impresión
A través de un objeto que puede devolver respuestas de esquema bidi para que USBMon las procese
Sintaxis (método startPrintJob)
function startPrintJob(jobScriptContext, printerStream, printerBidiSchemaResponses);
Parámetros (método startPrintJob)
jobScriptContext [in] Objeto IPrinterScriptUsbJobContext que proporciona acceso al código JavaScript del fabricante al contenedor de propiedades del trabajo y a los flujos de datos persistentes. printerStream
[in] Objeto IPrinterScriptableSequentialStream que el código JavaScript del fabricante puede usar para leer y escribir datos en el dispositivo de impresión. printerBidiSchemaResponses
[out] Objeto IPrinterBidiSchemaResponses que el código JavaScript del fabricante puede usar para devolver cualquier cambio o actualización del valor del esquema bidi.
Valores devueltos (método startPrintJob)
Valor devuelto | Descripción |
---|---|
0 | Correcto. |
1 | Error: limpia el objeto de contexto de trabajo y devuelve un código de error al administrador de trabajos de impresión. |
Método writePrintData
USBMon llama a este método durante writePort. Llamar a writePrintData permite al controlador modificar la secuencia de impresión o implementar un protocolo de solicitud/respuesta basado en host que se usa mientras el dispositivo de impresión imprime un trabajo. El objeto de contexto del trabajo se pasa al método para permitir que el código javaScript del fabricante administre las propiedades del trabajo y obtenga acceso a los flujos de datos persistentes. Los datos de impresión se pasan como una matriz de JavaScript para que el código JavaScript se procese. writePrintData también proporciona acceso al dispositivo de impresora de las maneras siguientes:
Mediante el flujo de impresión
A través de un objeto que puede devolver respuestas de esquema bidi para que USBMon las procese
function writePrintData(jobScriptContext, writePrintDataProgress, printData, printerStream, printerBidiSchemaResponses);
Parámetros (método writePrintData)
jobScriptContext [in] Objeto IPrinterScriptUsbJobContext que proporciona acceso al código JavaScript del fabricante al contenedor de propiedades del trabajo y a los flujos de datos persistentes. writePrintDataProgress
[in] Objeto IPrinterScriptableSequentialStream que el código JavaScript del fabricante puede usar para leer y escribir datos en el dispositivo de impresión. printData
[in] Objeto IDispatch, una matriz de JavaScript de los datos de impresión actuales. El parámetro printData permite que el código JavaScript manipule los datos antes de almacenarlos en caché en uno de los flujos de datos de jobScriptContext o enviarlos a la impresora a través de printerStream. printerStream
[in] Objeto IPrinterScriptableSequentialStream que el código JavaScript del fabricante puede usar para leer y escribir datos en el dispositivo de impresión. printerBidiSchemaResponses
[out] Objeto IPrinterBidiSchemaResponses que el código JavaScript del fabricante puede usar para devolver cualquier cambio o actualización del valor del esquema bidi.
Valores devueltos (método writePrintData)
Valor devuelto | Descripción |
---|---|
0 | Correcto. El número de bytes procesados desde el flujo de datos de impresión (printData) se devuelve a través de writePrintDataProgress. |
1 | Error: devuelve un código de error al administrador de trabajos de impresión. |
2 | Reintentar: procesa las actualizaciones del esquema bidi (incluidos los eventos bidi) en printerBidiSchemaResponses y vuelva a llamar a la función de JavaScript para permitir que el código del fabricante continúe procesando los datos. El número de bytes procesados desde el flujo de datos de impresión (printData) se devuelve a través de writePrintDataProgress. |
3 | DeviceBusy: el canal de comunicación del dispositivo no acepta datos en este momento. Esto no indica un error. USBMon debe informar al administrador de trabajos de impresión de que el dispositivo está ocupado y, a continuación, llamar a la función de nuevo en un momento posterior. El número de bytes procesados desde el flujo de datos de impresión (printData) se devuelve a través de writePrintDataProgress. |
4 | AbortTheJob: el dispositivo no puede continuar procesando el trabajo o el usuario ha cancelado el trabajo mediante el panel frontal del dispositivo de impresión. Cuando USBMon recibe el mensaje para anular un trabajo de impresión, pasa la información al administrador de trabajos de impresión para anular el trabajo, antes de volver. |
Método endPrintJob
USBMon llama a este método durante endDocPort. Llamar a endPrintJob permite al controlador modificar la secuencia de impresión o implementar un protocolo de solicitud/respuesta basado en host que se usa mientras el dispositivo de impresión imprime un trabajo. El objeto de contexto de trabajo se pasa al método para permitir que el código JavaScript del fabricante:
Finalice el procesamiento de los datos de impresión que se conservan
Acceda al dispositivo de impresora a través del flujo de impresión
Acceda a un objeto que puede pasar respuestas de esquema bidi para que USBMon las procese
function endPrintJob(jobScriptContext, printerStream, printerBidiSchemaResponses);
Parámetros (método endPrintJob)
jobScriptContext [in] Objeto IPrinterScriptUsbJobContext que proporciona acceso al código JavaScript del fabricante al contenedor de propiedades del trabajo y a los flujos de datos persistentes. printerStream
[in] Objeto IPrinterScriptableSequentialStream que el código JavaScript del fabricante puede usar para leer y escribir datos en el dispositivo de impresión. printerBidiSchemaResponses
[out] Objeto IPrinterBidiSchemaResponses que el código JavaScript del fabricante puede usar para devolver cualquier cambio o actualización del valor del esquema bidi.
Valores devueltos (método endPrintJob)
Valor devuelto | Descripción |
---|---|
0 | Correcto: limpia el objeto de contexto de trabajo y devuelve el resultado correcto al administrador de trabajos de impresión. |
1 | Error: limpia el objeto de contexto de trabajo y devuelve un código de error al administrador de trabajos de impresión. |
2 | Reintentar: procesa las actualizaciones del esquema bidi (incluidos los eventos bidi) en printerBidiSchemaResponses y vuelva a llamar a la función de JavaScript para permitir que el código JavaScript del fabricante continúe procesando los datos. |
Bidi a través del USB secundario
Si el dispositivo admite una interfaz USB secundaria, el dispositivo puede usar los métodos getSchemas y setSchema descritos en las secciones anteriores, además del método requestStatus.
Método requestStatus
Se llama a este método en lugar de getStatus, si se ha especificado la directiva BidiUSBStatusInterface en el archivo de manifiesto del controlador v4. requestStatus se usa para obtener el estado de un dispositivo de impresión mientras el dispositivo está imprimiendo.
En el diagrama siguiente se proporciona información general sobre la arquitectura de extensión bidi USB, que muestra el escenario en el que se ha especificado la directiva BidiUSBStatusInterface y, por tanto, la comunicación se enruta a través de una interfaz USB alternativa.
Este método se llama repetidamente durante la impresión. Se espera que el dispositivo solo devuelva datos si está disponible y el script puede entenderlos. Si el dispositivo no admite el estado solicitado o no es necesario llamar a este método de nuevo, el script debe devolver un valor de 2 que indicará al subproceso de ejecución getStatus en USBMon que salga correctamente.
Parámetros (método requestStatus)
scriptContext [in] Objeto IPrinterScriptContext que proporciona acceso a los contenedores de propiedades pertinentes. printerStream
[in] Objeto IPrinterScriptableSequentialStream que permite el acceso de lectura y escritura al bus USB. printerBidiSchemaResponses
[out] Objeto que usa el script para almacenar todas las respuestas a las claves de consulta.
Valores devueltos (método requestStatus)
Valor devuelto | Descripción |
---|---|
0 | El script se completó correctamente. |
2 | El dispositivo conectado ya no admite el estado solicitado y no se debe llamar a esta función de nuevo. |