fundo
Usando o LaTeX para escrever um livro. Quando um usuário compra o livro, o PDF é gerado automaticamente.
Problema
O PDF deve ter uma marca d'água que inclua o nome e as informações de contato da pessoa.
Pergunta, questão
Qual software atende aos seguintes critérios:
- Aplica marcas d'água invisíveis e criptografadas em um PDF
- Código aberto
- Independente da plataforma (Linux, Windows)
- Rápido (marca um PDF de 200 páginas em menos de 1 segundo)
- Processamento em lote (exclusivamente orientado por linha de comando)
- Resistente a ataques de conluio
- Não frágil (por exemplo, PDF -> EPS -> PDF ainda contém a marca d'água)
- Bem documentado (mostra exemplos de usos)
Ideias e Recursos
Algumas reflexões e conclusões:
- Marcas d'água de processamento de linguagem natural (PNL).
- Aplique esteganografia em uma imagem selecionada aleatoriamente.
- http://openstego.sourceforge.net/cmdline.html
O problema com a PNL é que erros gramaticais podem ser introduzidos. O problema com a esteganografia é que as imagens são originadas de um cache de imagens e, portanto, a recriação desse cache com imagens com marca d'água dará um atraso na geração do PDF (eu poderia excluir uma imagem do cache, mas essa não é uma solução elegante).
Obrigado!
pdf
encryption
batch
watermark
steganography
Dave Jarvis
fonte
fonte
Respostas:
Eu fiz algo semelhante há alguns anos atrás. Não atendeu a todos os seus critérios "rígidos". Funcionou assim:
Coloquei uma área "clicável" dificilmente detectável e com tamanho de ponto 2x2 em algum lugar aleatório em uma das bordas de uma página PDF aleatória. Não é muito provável que seja descoberto por acidente (entre a carga de outros pontos de acesso obviamente muito clicáveis que estavam no PDF de qualquer maneira ...).
Se você clicar no link, você será direcionado para uma página da Web
http://my.own.site/project/87245e386722ad77b4212dbec4f0e912
, com alguns pontos de "errata" inventados. (Eu mencionei que87245e386722ad77b4212dbec4f0e912
era o hash MD5 do nome da pessoa + dados de contato que eu mantinha armazenados em uma tabela do banco de dados? :-)Obviamente, isso não protege contra impressão + digitalização + gravação ou contra um ciclo de "repetição" de PDF. E também conta com algum grau de "segurança pela obscuridade".
Aqui está como você usa o Ghostscript para adicionar um ponto de acesso clicável ao canto inferior esquerdo da página 1 de random-in.pdf:
Para tornar a área clicável maior e visível, altere acima dos parâmetros da linha de comando como este:
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, devido aos documentos UUID e CreationDate e ModDate dentro de seus metadados. Obviamente, isso também permite rastrear os PDFs originais em formato digital ...
fonte
-dJPEQ=100 -dQFActor=1.0
à linha de comando Ghostscript para garantir que você mantenha 100% da qualidade JPEG existente. Mas não, eu não tenho notado qualquer degradação da qualidade de imagem em meus arquivos se eu usasse a definição genérica de-dPDFSETTINGS=/prepress
quando re-destilação quaisquer PDFs com Ghostscript ....-dColorImageFilter=/FlateEncode
(que é ZIP sem perdas) para substituir o padrão=/DCTEncode
(que é JPEG com perdas) nas versões GS mais antigas. Desde GS v7.21 o padrão é=/FlateEncode
de qualquer maneira ... O mesmo que para a cor é verdade para-dGrayImageFilter=...
(-dMonoImageFilter=...
usos/CCITTFaxEncode
por padrão.)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 aleatoriamente.
No entanto, se eu fosse encarregado disso, 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, é possível obter o layout idêntico ao livro e usar algum tipo de script para selecionar aleatoriamente a imagem, o conteúdo ou qualquer coisa e um componente PDF do lado do servidor que reúne o documento.
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 foto, 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 em pdf e o baixa para o cliente.
Novamente, eu sei que isso não será fácil / direto, mas você não está pedindo algo fácil e é a melhor maneira de pensar.
fonte