1.6.0 • Published 5 months ago
printer-electron-node v1.6.0
printer-electron-node
Node.js e Electron bindings para gerenciamento e impressão direta em impressoras. Suporta Windows e Linux (CUPS).
Características
- Listar todas as impressoras disponíveis
- Obter impressora padrão do sistema
- Obter status detalhado da impressora
- Impressão direta (raw printing)
- Suporte a TypeScript
- API assíncrona (Promises)
- Compatível com Node.js e Electron
Requisitos
- Node.js >= 18.20.6
- Electron >= 20.0.0
- Windows ou Linux
- Para Windows: Visual Studio Build Tools
- Para Linux: CUPS development headers (
sudo apt-get install libcups2-dev
)
Instalação
npm install printer-electron-node
Para desenvolvimento:
git clone https://github.com/Alexssmusica/printer-electron-node.git
cd printer-electron-node
npm install
npm run rebuild
Uso
JavaScript
const printer = require('printer-electron-node');
// Listar todas as impressoras
printer.getPrinters()
.then(printers => {
console.log('Impressoras disponíveis:', printers);
})
.catch(console.error);
// Obter impressora padrão
printer.getDefaultPrinter()
.then(defaultPrinter => {
console.log('Impressora padrão:', defaultPrinter);
})
.catch(console.error);
// Verificar status de uma impressora
printer.getStatusPrinter({ printerName: 'Nome da Impressora' })
.then(status => {
console.log('Status da impressora:', status);
})
.catch(console.error);
// Imprimir diretamente
const printOptions = {
printerName: 'Nome da Impressora',
data: 'Texto para impressão',
dataType: 'RAW' // opcional, padrão é 'RAW'
};
printer.printDirect(printOptions)
.then(result => {
console.log('Resultado:', result);
})
.catch(console.error);
TypeScript
import printer, {
Printer,
PrintDirectOptions,
GetStatusPrinterOptions
} from 'printer-electron-node';
async function exemplo() {
try {
// Listar impressoras
const printers: Printer[] = await printer.getPrinters();
console.log('Impressoras:', printers);
// Obter impressora padrão
const defaultPrinter: Printer = await printer.getDefaultPrinter();
console.log('Impressora padrão:', defaultPrinter);
// Verificar status
const statusOptions: GetStatusPrinterOptions = {
printerName: 'Nome da Impressora'
};
const status: Printer = await printer.getStatusPrinter(statusOptions);
console.log('Status:', status);
// Imprimir
const printOptions: PrintDirectOptions = {
printerName: 'Nome da Impressora',
data: Buffer.from('Texto para impressão'),
dataType: 'RAW'
};
const result = await printer.printDirect(printOptions);
console.log('Resultado:', result);
} catch (error) {
console.error('Erro:', error);
}
}
API
getPrinters(): Promise<Printer[]>
Lista todas as impressoras instaladas no sistema.
Retorna um array de objetos Printer
:
interface Printer {
name: string;
isDefault: boolean;
status: string;
details: {
location?: string;
comment?: string;
driver?: string;
port?: string;
[key: string]: string | undefined;
};
}
getDefaultPrinter(): Promise
Obtém a impressora padrão do sistema.
Retorna um objeto Printer
.
getStatusPrinter(options: GetStatusPrinterOptions): Promise
Obtém o status detalhado de uma impressora específica.
interface GetStatusPrinterOptions {
printerName: string;
}
printDirect(options: PrintDirectOptions): Promise
Envia dados diretamente para a impressora.
interface PrintDirectOptions {
printerName: string;
data: string | Buffer;
dataType?: 'RAW' | 'TEXT' | 'COMMAND' | 'AUTO';
}
Valores possíveis para status:
- "ready": impressora pronta
- "offline": impressora offline
- "error": erro genérico
- "paper-jam": papel atolado
- "paper-out": sem papel
- "manual-feed": alimentação manual
- "paper-problem": problema com papel
- "busy": ocupada
- "printing": imprimindo
- "output-bin-full": bandeja de saída cheia
- "not-available": não disponível
- "waiting": aguardando
- "processing": processando
- "initializing": inicializando
- "warming-up": aquecendo
- "toner-low": pouco toner
- "no-toner": sem toner
- "page-punt": problema na página
- "user-intervention": necessita intervenção do usuário
- "out-of-memory": sem memória
- "door-open": porta aberta
Plataformas Suportadas
- Windows (32/64 bits)
- Linux (CUPS)
Troubleshooting
Windows
- Certifique-se de ter o Visual Studio Build Tools instalado
- Execute
npm run rebuild
após a instalação - Verifique as permissões de acesso às impressoras
Linux
- Instale as dependências do CUPS:
sudo apt-get install libcups2-dev
- Verifique se o serviço CUPS está rodando:
sudo service cups status
- Verifique as permissões do usuário:
sudo usermod -a -G lp $USER
Desenvolvimento
# Clonar o repositório
git clone https://github.com/Alexssmusica/printer-electron-node.git
# Instalar dependências
npm install
# Compilar
npm run rebuild
# Executar testes
node teste.js
Licença
MIT
Contribuindo
- Fork o projeto
- Crie sua Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature'
) - Push para a Branch (
git push origin feature/AmazingFeature
) - Abra um Pull Request
Changelog
1.0.0
- Implementação inicial
- Suporte a Windows e Linux
- API básica de impressão e gerenciamento de impressoras
Autor
Alex Santos de Souza - @Alexssmusica
Agradecimentos
- Node.js
- node-addon-api
- CUPS