Referência da API JavaScript
Importante
A plataforma de impressão moderna é o meio preferencial do Windows para se comunicar com as impressoras. Recomendamos que você use o driver de classe de caixa de entrada IPP da Microsoft juntamente com PSA (Aplicativos de Suporte à Impressão) para personalizar a experiência de impressão no Windows 10 e 11 para o desenvolvimento de dispositivos de impressora.
Para obter mais informações, consulte Plataformade impressão moderna e o Guia de design do aplicativo de suporte de impressão.
Os fabricantes podem usar a API JavaScript apresentada aqui, em combinação com um arquivo XML Bidi para fornecer suporte para Bidi por meio de uma conexão USB com um dispositivo de impressão.
Para obter mais informações sobre a comunicação USB Bidi com um dispositivo de impressão, consulte USB Bidi Extender.
Bidi sobre USB
Método getSchemas
Esse método lida com consultas GET Bidi, como \Printer.Consumables.YellowInk:Level. O código JavaScript é capaz de fazer consultas à impressora usando o barramento USB e ler as respostas à medida que elas voltam.
sintaxe
function getSchemas(scriptContext, printerStream, schemaRequests, printerBidiSchemaResponses);
Parâmetros (método getSchemas)
scriptContext [in] Um objeto IPrinterScriptContext que fornece acesso a recipientes de propriedades relevantes. printerStream
[in] Um objeto IPrinterScriptableSequentialStream que permite acesso de leitura e gravação ao barramento USB. schemaRequests
[in] Objeto de matriz que contém todas as cadeias de caracteres de consulta bidi solicitadas. printerBidiSchemaResponses
[out] Objeto que o script usa para armazenar todas as respostas às chaves de consulta.
Retornar valores (método getSchemas)
Valor retornado | Descrição |
---|---|
0 | O script foi concluído com sucesso. |
1 | O dispositivo conectado não estava pronto para fornecer algumas informações solicitadas. Indica que o sistema de impressão deve chamar a função novamente usando quaisquer Chaves de Repetição adicionadas durante o processamento. |
Método setSchema
Esse método lida com operações Bidi SET. O script pode determinar o valor do Esquema Bidi de entrada para definir dados no dispositivo ou executar alguma ação no dispositivo, como limpar cabeças de tinta.
Se o dispositivo não estiver pronto para processar os dados especificados, o método poderá retornar um valor de 1 para indicar que a chamada deve ser repetida após um período de espera.
Parâmetros (método setSchema)
scriptContext [in] Um objeto IPrinterScriptContext que fornece acesso a recipientes de propriedades relevantes. printerStream
[in] Um objeto IPrinterScriptableSequentialStream que permite acesso de leitura e gravação ao barramento USB. printerBidiSchemaElement
[in] Um objeto IPrinterBidiSchemaElement que contém todos os dados associados ao Valor do Esquema Bidi a ser definido.
Valores retornados (método setSchema)
Valor retornado | Descrição |
---|---|
0 | O script foi concluído com sucesso. |
1 | O dispositivo conectado não estava pronto para fornecer algumas informações solicitadas. Indica que o sistema de impressão deve chamar a função novamente usando o printerBidiSchemaElement fornecido. |
Método getStatus
Esse método é usado para obter o status não solicitado de uma impressora enquanto o dispositivo está imprimindo. Esta função só é chamada durante a impressão. O dispositivo deve fornecer dados no canal de leitura que esse script pode interpretar em valores de Esquema Bidi. Como o canal de gravação no dispositivo é bloqueado por dados de impressão, apenas o status não solicitado é suportado aqui.
Esse método é chamado repetidamente durante a impressão. Espera-se que o dispositivo retorne dados apenas se estiverem disponíveis e o script puder entendê-los. Se o dispositivo não der suporte ao status não solicitado ou não houver necessidade de chamar essa função novamente, o script deverá retornar um valor de 2 que informará o thread de execução getStatus no USBMon para sair com êxito.
Parâmetros (método getStatus)
scriptContext [in] Um objeto IPrinterScriptContext que fornece acesso a recipientes de propriedades relevantes. printerStream
[in] Um objeto IPrinterScriptableSequentialStream que permite acesso de leitura e gravação ao barramento USB. printerBidiSchemaResponses
[out] Objeto que o script usa para armazenar todas as respostas às chaves de consulta.
Retornar valores (método getStatus)
Valor retornado | Descrição |
---|---|
0 | O script foi concluído com sucesso. |
2 | O dispositivo anexado não dá mais suporte ao status não solicitado e essa função não deve ser chamada novamente. |
método startPrintJob
USBMon chama esse método durante StartDocPort. Chamar startPrintJob permite que o driver modifique o fluxo de impressão ou implemente um protocolo de solicitação/resposta baseado em host que é usado enquanto o dispositivo de impressão está imprimindo um trabalho. O objeto de contexto de trabalho é passado para a função para permitir que o código JavaScript do fabricante gerencie as propriedades do trabalho e obtenha acesso aos fluxos de dados persistentes. Os dados de impressão são passados como uma matriz JavaScript para o código JavaScript processar. O startPrintJob também fornece acesso ao dispositivo da impressora das seguintes maneiras:
Através do fluxo de impressão
Por meio de um objeto que pode retornar respostas do Esquema Bidi para USBMon processar
Sintaxe (método startPrintJob)
function startPrintJob(jobScriptContext, printerStream, printerBidiSchemaResponses);
Parâmetros (método startPrintJob)
jobScriptContext [in] Um objeto IPrinterScriptUsbJobContext que fornece ao código JavaScript do fabricante acesso ao recipiente de propriedades do trabalho e aos fluxos de dados persistentes. printerStream
[in] Um objeto IPrinterScriptableSequentialStream, que o código JavaScript do fabricante pode usar para ler e gravar dados no dispositivo de impressão. printerBidiSchemaResponses
[out] Um objeto IPrinterBidiSchemaResponses que o código JavaScript do fabricante pode usar para retornar qualquer alteração/atualização de valor do Esquema Bidi.
Valores retornados (método startPrintJob)
Valor retornado | Descrição |
---|---|
0 | Êxito. |
1 | Falha – Limpe o objeto Contexto do Trabalho e retorne um código de erro para o spooler de impressão. |
Método writePrintData
USBMon chama esse método durante writePort. Chamar writePrintData permite que o driver modifique o fluxo de impressão ou implemente um protocolo de solicitação/resposta baseado em host que é usado enquanto o dispositivo de impressão está imprimindo um trabalho. O objeto de contexto de trabalho é passado para o método para permitir que o código JavaScript do fabricante gerencie as propriedades do trabalho e obtenha acesso aos fluxos de dados persistentes. Os dados de impressão são passados como uma matriz JavaScript para o código JavaScript processar. writePrintData também fornece acesso ao dispositivo de impressora das seguintes maneiras:
Através do fluxo de impressão
Por meio de um objeto que pode retornar respostas do Esquema Bidi para USBMon processar
function writePrintData(jobScriptContext, writePrintDataProgress, printData, printerStream, printerBidiSchemaResponses);
Parâmetros (método writePrintData)
jobScriptContext [in] Um objeto IPrinterScriptUsbJobContext que fornece ao código JavaScript do fabricante acesso ao recipiente de propriedades do trabalho e aos fluxos de dados persistentes. writePrintDataProgress
[in] Um objeto IPrinterScriptableSequentialStream que o código JavaScript do fabricante pode usar para ler e gravar dados no dispositivo de impressão. printData
[in] Um objeto IDispatch, uma matriz JavaScript dos dados de impressão atuais. O parâmetro printData permite que o código JavaScript manipule os dados antes de armazená-los em cache em um dos fluxos de dados em jobScriptContext ou enviá-los para a impressora via printerStream. printerStream
[in] Um objeto IPrinterScriptableSequentialStream que o código JavaScript do fabricante pode usar para ler e gravar dados no dispositivo de impressão. printerBidiSchemaResponses
[out] Um objeto IPrinterBidiSchemaResponses que o código JavaScript do fabricante pode usar para retornar qualquer alteração/atualização de valor do Esquema Bidi.
Retornar valores (método writePrintData)
Valor retornado | Descrição |
---|---|
0 | Êxito. O número de bytes processados do fluxo de dados de impressão (printData) é retornado por meio de writePrintDataProgress. |
1 | Falha – Retorna um código de erro para o spooler de impressão. |
2 | Repetir – processe todas as atualizações de esquema bidi (incluindo eventos bidi) em printerBidiSchemaResponses e, em seguida, chame a função JavaScript novamente para permitir que o código do fabricante continue processando os dados. O número de bytes processados do fluxo de dados de impressão (printData) é retornado por meio de writePrintDataProgress. |
3 | DeviceBusy – O canal de comunicação do dispositivo não está aceitando dados no momento. Isso não indica uma falha. O USBMon deve informar ao spooler que o dispositivo está ocupado e, em seguida, chamar a função novamente posteriormente. O número de bytes processados do fluxo de dados de impressão (printData) é retornado por meio de writePrintDataProgress. |
4 | AbortTheJob – O dispositivo não pode continuar processando o trabalho ou o usuário cancelou o trabalho usando o painel frontal do dispositivo de impressão. Quando o USBMon recebe a mensagem para anular um trabalho de impressão, ele passa as informações para o spooler de impressão para anular o trabalho, antes de retornar. |
Método endPrintJob
USBMon chama esse método durante endDocPort. Chamar endPrintJob permite que o driver modifique o fluxo de impressão ou implemente um protocolo de solicitação/resposta baseado em host que é usado enquanto o dispositivo de impressão está imprimindo um trabalho. O objeto de contexto do trabalho é passado para o método para permitir que o código JavaScript do fabricante:
Conclua o processamento de todos os dados de impressão que persistiram
Acesse o dispositivo da impressora por meio do fluxo de impressão
Acessar um objeto que pode passar respostas do Esquema Bidi para USBMon processar
function endPrintJob(jobScriptContext, printerStream, printerBidiSchemaResponses);
Parâmetros (método endPrintJob)
jobScriptContext [in] Um objeto IPrinterScriptUsbJobContext que fornece ao código JavaScript do fabricante acesso ao recipiente de propriedades do trabalho e aos fluxos de dados persistentes. printerStream
[in] Um objeto IPrinterScriptableSequentialStream que o código JavaScript do fabricante pode usar para ler e gravar dados no dispositivo de impressão. printerBidiSchemaResponses
[out] Um objeto IPrinterBidiSchemaResponses que o código JavaScript do fabricante pode usar para retornar qualquer alteração/atualização de valor do Esquema Bidi.
Valores retornados (método endPrintJob)
Valor retornado | Descrição |
---|---|
0 | Sucesso – Limpe o objeto Contexto do Trabalho e retorne o sucesso para o spooler de impressão. |
1 | Falha – Limpe o objeto Contexto do Trabalho e retorne um código de erro para o spooler de impressão. |
2 | Repetir – processe todas as atualizações de esquema bidi (incluindo eventos bidi) em printerBidiSchemaResponses e, em seguida, chame a função JavaScript novamente para permitir que o código JavaScript do fabricante continue processando os dados. |
Bidi sobre USB secundário
Se o dispositivo der suporte a uma interface USB secundária, o dispositivo poderá usar os métodos getSchemas e setSchema descritos nas seções anteriores, além do método requestStatus.
método requestStatus
Esse método será chamado em vez de getStatus, se a diretiva BidiUSBStatusInterface tiver sido especificada no arquivo de manifesto do driver v4. requestStatus é usado para obter o status de um dispositivo de impressão enquanto o dispositivo está imprimindo.
O diagrama a seguir fornece uma visão geral da arquitetura de extensão USB Bidi, mostrando o cenário em que a diretiva BidiUSBStatusInterface foi especificada e, portanto, a comunicação é roteada por uma interface USB alternativa.
Esse método é chamado repetidamente durante a impressão. Espera-se que o dispositivo retorne dados apenas se estiverem disponíveis e o script puder entendê-los. Se o dispositivo não suportar o status solicitado ou não houver necessidade de chamar esse método novamente, o script deverá retornar um valor de 2 que informará o thread de execução getStatus no USBMon para sair com êxito.
Parâmetros (método requestStatus)
scriptContext [in] Um objeto IPrinterScriptContext que fornece acesso a recipientes de propriedades relevantes. printerStream
[in] Um objeto IPrinterScriptableSequentialStream que permite acesso de leitura e gravação ao barramento USB. printerBidiSchemaResponses
[out] Objeto que o script usa para armazenar todas as respostas às chaves de consulta.
Valores retornados (método requestStatus)
Valor retornado | Descrição |
---|---|
0 | O script foi concluído com sucesso. |
2 | O dispositivo anexado não dá mais suporte ao status solicitado e essa função não deve ser chamada novamente. |