Class: PdfCrypto

@nginstack/engine/lib/pdf/PdfCrypto~ PdfCrypto


new PdfCrypto()

Classe que disponibiliza métodos estáticos para criptografia e descriptografia de documentos PDF.

A criptografia é realizada utilizando AES-256 (PDF 2.0 / ISO 32000-2, revisão R=6, com normalização SASLprep UTF-8 para senhas). Na descriptografia, são suportados documentos criptografados com os algoritmos padrão do formato PDF (RC4 40/128 bits, AES-128 e AES-256).

Não construa instâncias de PdfCrypto. Ao invés, utilize os métodos estáticos desta classe.

Methods


<static> decryptBytes(content, password)

Descriptografa o conteúdo de um PDF criptografado em memória e retorna os bytes do PDF descriptografado. Aceita tanto a senha de usuário (userPassword) quanto a senha de proprietário (ownerPassword).

Esta função trata as strings como se fossem uma sequência de bytes no formato conhecido por "Binary String", onde cada caractere da string representa um byte do conteúdo binário.

Parameters:
Name Type Description
content Uint8Array | ArrayBuffer | string

Conteúdo binário do documento PDF criptografado.

password string

Senha de usuário ou de proprietário do documento PDF.

Returns:

Conteúdo binário do documento PDF descriptografado.

Type
Uint8Array
Example
const PdfCrypto = require('@nginstack/engine/lib/pdf/PdfCrypto.js');

const decryptedBytes = PdfCrypto.decryptBytes(encryptedBytes, 'minha-senha');

<static> decryptFile(inputPath, outputPath, password)

Descriptografa um arquivo PDF criptografado em disco e grava o documento descriptografado no caminho de destino. Aceita tanto a senha de usuário (userPassword) quanto a senha de proprietário (ownerPassword).

Parameters:
Name Type Description
inputPath string

Caminho do arquivo PDF criptografado de entrada.

outputPath string

Caminho onde o arquivo PDF descriptografado será gravado.

password string

Senha de usuário ou de proprietário do documento PDF.

Example
const PdfCrypto = require('@nginstack/engine/lib/pdf/PdfCrypto.js');

PdfCrypto.decryptFile('protegido.pdf', 'desbloqueado.pdf', 'minha-senha');

<static> encryptBytes(content, passwordOrOptions)

Criptografa o conteúdo de um PDF em memória e retorna os bytes do PDF criptografado.

Esta função trata as strings como se fossem uma sequência de bytes no formato conhecido por "Binary String", onde cada caractere da string representa um byte do conteúdo binário.

Parameters:
Name Type Description
content Uint8Array | ArrayBuffer | string

Conteúdo binário do documento PDF.

passwordOrOptions string | PdfEncryptOptions

Senha de usuário ou objeto com as opções de criptografia.

Returns:

Conteúdo binário do documento PDF criptografado.

Type
Uint8Array
Example
const PdfCrypto = require('@nginstack/engine/lib/pdf/PdfCrypto.js');
const virtualFS = require('@nginstack/engine/context/virtualFS.js');

const pdfBytes = virtualFS.getFileContent(pdfFileKey);
const encryptedBytes = PdfCrypto.encryptBytes(pdfBytes, 'minha-senha');

<static> encryptFile(inputPath, outputPath, passwordOrOptions)

Criptografa um arquivo PDF em disco e grava o documento criptografado no caminho de destino.

Parameters:
Name Type Description
inputPath string

Caminho do arquivo PDF de entrada.

outputPath string

Caminho onde o arquivo PDF criptografado será gravado.

passwordOrOptions string | PdfEncryptOptions

Senha de usuário ou objeto com as opções de criptografia.

Examples
const PdfCrypto = require('@nginstack/engine/lib/pdf/PdfCrypto.js');

PdfCrypto.encryptFile('entrada.pdf', 'saida.pdf', 'minha-senha');
const PdfCrypto = require('@nginstack/engine/lib/pdf/PdfCrypto.js');

PdfCrypto.encryptFile('entrada.pdf', 'saida.pdf', {
  userPassword: 'senha-leitura',
  ownerPassword: 'senha-proprietario',
  permissions: {
    printing: true,
    modifying: false,
    copying: false
  }
});

<static> isEncryptedBytes(content)

Verifica se o conteúdo de um PDF em memória está criptografado.

Esta função trata as strings como se fossem uma sequência de bytes no formato conhecido por "Binary String", onde cada caractere da string representa um byte do conteúdo binário.

Parameters:
Name Type Description
content Uint8Array | ArrayBuffer | string

Conteúdo binário do documento PDF.

Returns:

true se o documento PDF estiver criptografado; false caso contrário.

Type
boolean
Example
const PdfCrypto = require('@nginstack/engine/lib/pdf/PdfCrypto.js');

if (PdfCrypto.isEncryptedBytes(pdfBytes)) {
  pdfBytes = PdfCrypto.decryptBytes(pdfBytes, 'minha-senha');
}

<static> isEncryptedFile(inputPath)

Verifica se um arquivo PDF em disco está criptografado.

Parameters:
Name Type Description
inputPath string

Caminho do arquivo PDF.

Returns:

true se o documento PDF estiver criptografado; false caso contrário.

Type
boolean
Example
const PdfCrypto = require('@nginstack/engine/lib/pdf/PdfCrypto.js');

if (PdfCrypto.isEncryptedFile('documento.pdf')) {
  PdfCrypto.decryptFile('documento.pdf', 'desbloqueado.pdf', 'minha-senha');
}