1.4.2 • Published 5 months ago

printer-pdf-electron-node v1.4.2

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
5 months ago

printer-pdf-electron-node

Uma biblioteca Node.js para impressão de arquivos PDF com suporte avançado a configurações de impressão. Funciona com Node.js e Electron.

Características

  • 🖨️ Impressão direta de PDFs para qualquer impressora do sistema
  • 📏 Suporte a diferentes tamanhos de papel (A4, Letter, Legal, A3, Custom)
  • 📑 Impressão de páginas específicas ou intervalos
  • 🔄 Ajuste automático do conteúdo à página
  • 📐 Configuração precisa de margens
  • 🎯 Controle de DPI para qualidade de impressão
  • 📚 Impressão de múltiplas cópias
  • 💪 Suporte completo a TypeScript

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-pdf-electron-node

Para desenvolvimento:

git clone https://github.com/Alexssmusica/printer-pdf-electron-node.git
cd printer-pdf-electron-node
npm install
npm run rebuild

Uso

JavaScript

const { printPDF } = require('printer-pdf-electron-node');

// Exemplo básico
async function imprimirDocumento() {
    try {
        await printPDF({
            filePath: 'caminho/do/documento.pdf',
            printerName: 'Nome da Impressora'
        });
        console.log('Documento enviado para impressão');
    } catch (error) {
        console.error('Erro ao imprimir:', error);
    }
}

// Exemplo com todas as opções
async function imprimirDocumentoAvancado() {
    try {
        await printPDF({
            // Parâmetros obrigatórios
            filePath: 'caminho/do/documento.pdf',
            printerName: 'Nome da Impressora',
            
            // Parâmetros opcionais
            pageList: [[1, 3], [5, 7]], // Imprime páginas 1-3 e 5-7
            paperSize: 'A4',            // 'A4' | 'LETTER' | 'LEGAL' | 'A3' | 'CUSTOM'
            margins: {
                top: 0.5,    // margens em polegadas
                right: 0.5,
                bottom: 0.5,
                left: 0.5
            },
            fitToPage: true,  // ajusta o conteúdo à página
            width: 0,         // largura personalizada (usado apenas com paperSize: 'CUSTOM')
            height: 0,        // altura personalizada (usado apenas com paperSize: 'CUSTOM')
            dpi: 300,        // resolução de impressão
            copies: 1        // número de cópias
        });
        console.log('Documento enviado para impressão');
    } catch (error) {
        console.error('Erro ao imprimir:', error);
    }
}

TypeScript

import { printPDF, PrintPDFOptions, PaperSize, Margins } from 'printer-pdf-electron-node';

// Definindo as margens
const margins: Margins = {
    top: 0.5,
    right: 0.5,
    bottom: 0.5,
    left: 0.5
};

// Configurando todas as opções
const options: PrintPDFOptions = {
    filePath: 'caminho/do/documento.pdf',
    printerName: 'Nome da Impressora',
    pageList: [[1, 3], [5, 7]],
    paperSize: 'A4',
    margins,
    fitToPage: true,
    dpi: 300,
    copies: 1
};

async function imprimirDocumento() {
    try {
        const resultado = await printPDF(options);
        console.log(resultado); // 'Print job created successfully'
    } catch (error) {
        console.error('Erro ao imprimir:', error);
    }
}

API

printPDF(options: PrintPDFOptions): Promise<string>

Opções

ParâmetroTipoObrigatórioPadrãoDescrição
filePathstringSim-Caminho do arquivo PDF
printerNamestringSim-Nome da impressora
pageListArray<number, number>Não[]Lista de intervalos de páginas para imprimir
paperSizePaperSizeNão'A4'Tamanho do papel
marginsMarginsNão{0,0,0,0}Margens em polegadas
fitToPagebooleanNãotrueAjustar conteúdo à página
widthnumberNão0Largura personalizada (em pontos)
heightnumberNão0Altura personalizada (em pontos)
dpinumberNão300Resolução de impressão
copiesnumberNão1Número de cópias

Tipos

type PaperSize = 'A4' | 'LETTER' | 'LEGAL' | 'A3' | 'CUSTOM';

interface Margins {
    top?: number;    // em polegadas
    right?: number;  // em polegadas
    bottom?: number; // em polegadas
    left?: number;   // em polegadas
}

Notas

  • As margens são especificadas em polegadas (1 polegada = 25.4mm)
  • Para tamanhos de papel personalizados (paperSize: 'CUSTOM'), width e height são especificados em pontos (1 ponto = 1/72 polegada)
  • O DPI padrão é 300, que oferece um bom equilíbrio entre qualidade e performance
  • A opção fitToPage garante que o conteúdo se ajuste à área imprimível da página

Licença

Apache-2.0

1.4.2

5 months ago

1.4.1

5 months ago

1.4.0

5 months ago

1.3.7

5 months ago

1.3.6

5 months ago

1.3.5

5 months ago

1.3.4

5 months ago

1.3.3

5 months ago

1.3.2

5 months ago

1.3.1

5 months ago

1.3.0

5 months ago

1.2.5

5 months ago

1.2.4

5 months ago

1.2.3

5 months ago

1.2.2

5 months ago

1.2.1

5 months ago

1.2.0

5 months ago

1.1.10

6 months ago

1.1.9

6 months ago

1.1.8

6 months ago

1.1.7

6 months ago

1.1.6

6 months ago

1.1.5

6 months ago