Gerar ou atualizar um PDF para incluir uma marca d'água criptografada e oculta?

10

Antecedentes

Usando o LaTeX para escrever um livro. Quando um usuário compra o livro, o PDF será gerado automaticamente.

Problema

O PDF deve ter uma marca d'água que inclua o nome da pessoa e as informações de contato.

Pergunta

Qual software atende aos seguintes critérios:

  • Aplica marcas d'água invisíveis e criptografadas em um PDF
  • Código aberto
  • Independente de plataforma (Linux, Windows)
  • Rápido (marca um PDF de 200 páginas em menos de um segundo)
  • Processamento em lote (exclusivamente por linha de comando)
  • resistente a ataques de colisão
  • Não frágil (por exemplo, PDF - > EPS - > PDF ainda contém a marca d'água)
  • Bem documentado (mostra exemplos de uso)

Ideias e & Recursos

Alguns pensamentos e descobertas:

  • Marcas d'água de processamento de linguagem natural (NLP).
  • Aplique esteganografia em uma imagem selecionada aleatoriamente.
  • link

O problema com a PNL é que erros gramaticais podem ser introduzidos. O problema da esteganografia é que as imagens são originadas de um cache de imagem e, portanto, recriar esse cache com imagens com marca d'água gerará um atraso ao gerar o PDF (eu poderia excluir apenas uma imagem do cache, mas isso não é uma solução elegante).

Obrigado!

    
por Dave Jarvis 26.12.2010 / 10:02

2 respostas

6

Eu fiz algo parecido alguns anos atrás. Não cumpriu todos os seus critérios "rígidos". Funcionou assim:

  • Eu coloquei uma área "clicável" de tamanho 2x2, dificilmente detectável, em algum lugar aleatório em uma das bordas de uma página aleatória em PDF. Não é muito provável que isso seja descoberto por acidente (de qualquer maneira, entre a carga de outros pontos de acesso clicáveis, obviamente, que estavam no PDF ...).

  • Se você clicar no link, ele levará você para uma página da Web http://my.own.site/project/87245e386722ad77b4212dbec4f0e912 , com alguns pontos de "errata" inventados. (Eu mencionei que 87245e386722ad77b4212dbec4f0e912 era o hash MD5 do nome da pessoa + dados de contato que eu mantinha armazenados em uma tabela de banco de dados?): -)

Obviamente, isso não protege contra impressão + digitalização + ocr-ing ou contra um ciclo de "refriação" de PDF. E também depende de algum grau de "segurança pela obscuridade".

Aqui está como você usa o Ghostscript para adicionar um ponto de acesso clicável no canto inferior esquerdo da página 1 de random-in.pdf:

gs \
 -o random-out.pdf \
 -sDEVICE=pdfwrite \
 -dPDFSETTINGS=/prepress \
 -c "[ /Rect [1 1 3 3]" \
 -c "  /Color [1 1 1]" \
 -c "  /Page 1" \
 -c "  /Action <</Subtype /URI" \
 -c "  /URI (http://my.own.site/87245e386722ad77b4212dbec4f0e912)>>" \
 -c "  /Subtype /Link" \
 -c "  /ANN pdfmark" \
 -f random-in.pdf

Para tornar a área clicável maior e visível, altere os parâmetros acima da linha de comando como:

 [....]
 -c "[/Rect [1 1 50 50]" \
 -c "  /Color [1 0 0]" \
 [....]

Ainda mais simples seria gerar e manter um hash MD5 do PDF em seu banco de dados. Será uniq para cada PDF que você criar, por causa dos documentos UUID e CreationDate e ModDate dentro de seus metadados. Claro, isso também só permite rastrear os PDFs originais em sua forma digital ...

    
por 28.12.2010 / 21:02
1

Muito difícil e não tenho certeza se isso responderá a todas as suas perguntas.

Não tenho certeza de uma solução completa que possa fazer isso ou randomizar.

No entanto, se eu fosse encarregado disso, eu pensaria que a maneira mais fácil é manter o documento em um formato intermediário, como HTML formatado ou similar.

Usando um arquivo CSS de impressão ou similar, você pode fazer com que o layout seja idêntico ao livro e usar um script de algum tipo para randomizar a imagem, conteúdo ou qualquer coisa e um componente PDF do servidor que reúna o documento. / p>

então - por exemplo, quando alguém compra o documento, seu script de compra pode escolher aleatoriamente um número que identifique um mecanismo de proteção (por exemplo, primeira foto, segunda imagem, texto em algum lugar etc.) e gerar um link de download exclusivo.

Quando esse link de download é chamado, ele verifica o número, executa a operação e compila para o pdf e faz o download para o cliente.

Mais uma vez, sei que isso não será fácil / direto, mas você não está pedindo por algo que seja fácil e essa é a melhor maneira que posso pensar.

    
por 26.12.2010 / 11:27