
Pare de enviar documentos sem marca d'água. O Firemark aplica marcas d'água em imagens e PDFs com um único comando. Otimizado para combater a remoção de marcas d'água por IA. Escrito em Rust.
Uma ferramenta rápida de marcação d'água para imagens e PDFs em um único binário. Construída em Rust.
Todos os anos, milhões de pessoas são vítimas de fraude de identidade que começa com uma simples troca de documentos. Um cenário comum: você está procurando um apartamento para alugar. O proprietário — ou alguém se passando por ele — pede uma cópia do seu documento de identidade, um comprovante de salário, um aviso de imposto. Você envia sem marca. O "proprietário" desaparece, e seus documentos agora são usados para abrir contas bancárias, pegar empréstimos ou forjar identidades em seu nome.
Marcar com água cada documento que você envia é a defesa mais eficaz. Uma sobreposição visível que lê "Enviado para Agência XYZ — Março de 2026 — apenas para solicitação de aluguel de apartamento" torna o documento inútil para qualquer outro propósito. Se ele vazar, você sabe exatamente de onde veio.
firemark torna isso fácil: um comando, qualquer imagem ou PDF, 17 estilos visuais, padrões de filigrana criptográfica que resistem a edições, e processamento em lote para pastas inteiras.
Antes e depois — um comando, documento agora rastreável e com evidência de violação.
Binário pré-compilado (Linux & macOS, x86_64 & arm64) — baixa o último lançamento em ~/.local/bin:
curl -fsSL https://raw.githubusercontent.com/Vitruves/firemark/main/install.sh | sh
Binários para Windows estão anexados a cada lançamento.
Do crates.io:
cargo install firemark
A partir do código fonte:
git clone https://github.com/Vitruves/firemark.git
cd firemark
cargo install --path .
Produz um único binário otimizado (~5 MB).
# Watermark a single image
firemark photo_id.png -m "Flat rental — SCI Dupont — March 2026"
# Watermark a PDF
firemark tax_notice.pdf -m "CONFIDENTIAL" -s "Do not distribute"
# Watermark an entire folder recursively
firemark ./documents/ -R -m "Sent to Agency X" -t stamp
# Preview without writing files
firemark id_card.jpg -m "Draft" -n
A saída é salva junto com a entrada como {nome}-watermarked.{ext} por padrão.
Use -o para definir um caminho explícito de saída, ou -S para um sufixo personalizado.
firemark doc.pdf -t stamp -m "CONFIDENTIAL" --border --color red
firemark sobrepõe padrões de filigrana criptográfica inspirados em recursos de segurança de cédulas. Esses padrões geométricos finos são extremamente difíceis de remover com editores de imagem.
firemark id.png -m "Rental application" --filigrane moire
firemark id.png -m "Rental application" --filigrane none # disable
Cada renderização é não determinística por padrão. firemark aplica perturbação universal pós-renderização (variação alfa, ruído de cor de subpixel, micro-pontos nas bordas, pixels fantasmas esparsos) e randomização por renderizador para que duas saídas nunca sejam pixel-idênticas — mesmo com as mesmas configurações. Isso torna impossível para modelos de visão de IA aprenderem um padrão previsível a ser subtraído.
Além disso, tiras de injeção de prompt adversárias são incorporadas por padrão para
confundir ferramentas de remoção de marca d'água baseadas em IA. Desative com --no-anti-ai se não quiser o texto de prompt visível:
firemark doc.png -m "CONFIDENTIAL" --no-anti-ai
-m, --main-text Texto principal da marca d'água
-s, --secondary-text Linha de texto secundário
-t, --type Estilo da marca d'água (veja tabela acima)
-o, --output Caminho do arquivo de saída
-S, --suffix Sufixo personalizado de saída (padrão: "watermarked")
-c, --color Cor — nome ou #RRGGBB (padrão: azul)
-O, --opacity Opacidade 0.0–1.0 (padrão: 0.5)
-r, --rotation Ângulo em graus (padrão: -45)
-p, --position center, top-left, top-right, bottom-left, bottom-right, tile
-f, --font Nome da fonte ou caminho para .ttf/.otf
-I, --image Sobrepor uma imagem como marca d'água
--qr-data Incorporar um QR code com dados personalizados
--qr-code-position Posição do QR code (padrão: center)
--qr-code-size Tamanho do QR code em pixels (padrão: auto)
--border Desenhar uma borda ao redor da marca d'água
--shadow Adicionar sombra projetada
--filigrane Estilo da filigrana de segurança (padrão: guilloche)
--no-anti-ai Desabilitar injeção de prompt adversária (ativada por padrão)
Para a lista completa de 70+ flags, veja CLI.md.
--pages Páginas a marcar (ex.: 1,3-5 ou "all")
--skip-pages Páginas a pular
--behind Colocar marca d'água atrás do conteúdo
--no-flatten Manter camadas separadas (achatado por padrão)
--dpi Resolução de renderização (padrão: 150)
# Process all images and PDFs in a folder
firemark ./inbox/ -m "INTERNAL" -t tile
# Recursive, 8 threads, custom suffix
firemark ./docs/ -R -j 8 -m "Draft" -S draft
# Dry run — list what would be processed
firemark ./docs/ -R -m "Draft" -n
Arquivos já marcados (combinando o sufixo) são automaticamente ignorados em execuções repetidas.
Salve opções em um arquivo TOML para evitar repetir flags. Veja
examples/config/firemark.toml para um exemplo completo
com duas predefinições: ultra-secure (ladrilhamento denso, filigrana completa, rastreabilidade QR, remoção de metadados) e light (texto diagonal simples, sem extras).
# Global defaults
main_text = "CONFIDENTIAL"
secondary_text = "{author} — {date}"
watermark_type = "diagonal"
color = "#1a3c6e"
opacity = 0.45
font_weight = "bold"
filigrane = "guilloche"
border = true
[preset.ultra-secure]
main_text = "CONFIDENTIAL — {author}"
watermark_type = "tile"
color = "#CC0000"
opacity = 0.6
filigrane = "full"
anti_ai = true
qr_data = "firemark://{author}/{timestamp}/{uuid}"
strip_metadata = true
[preset.light]
main_text = "COPY"
watermark_type = "diagonal"
color = "#555555"
opacity = 0.3
filigrane = "none"
anti_ai = false
firemark doc.pdf --config firemark.toml
firemark doc.pdf --config firemark.toml --preset ultra-secure
firemark doc.pdf --config firemark.toml --preset light
firemark doc.pdf --save-preset mypreset # save current flags
firemark --list-presets # list available presets
A conversão entre formatos é suportada (ex.: firemark photo.webp -o out.pdf).
MIT
| Flag | Estilo | Descrição |
|---|
diagonal | Grade diagonal | Texto diagonal repetido em página inteira (padrão) |
stamp | Carimbo | Carimbo grande centralizado com borda dupla |
stencil | Estêncil | Letras estilo estêncil militar de largura total |
typewriter | Máquina de escrever | Texto monoespaçado de máquina de escrever |
handwritten | Assinatura | Assinatura estilo manuscrita com sublinhado |
redacted | Redação | Barras de redação pretas de largura total |
badge | Escudo | Emblema/escudo de segurança |
ribbon | Faixa | Faixa de canto diagonal |
seal | Selo | Selo circular notarial |
frame | Moldura | Moldura decorativa de página inteira |
tile | Ladrilho | Grade de texto uniforme e densa |
mosaic | Mosaico | Texto espalhado aleatoriamente |
weave | Trançado | Trançado diagonal entrelaçado |
ghost | Fantasma | Texto em relevo ultra-sutil |
watercolor | Aquarela | Efeito suave de borrão lavado |
noise | Ruído | Texto deteriorado com ruído de pixels |
halftone | Meio-tom | Texto como grade de pontos de meio-tom |
| Estilo | Descrição |
|---|
guilloche | Bandas de envelope de onda senoidal (padrão) |
rosette | Curvas de roseta espirógrafo + canto |
crosshatch | Treliça de diamante diagonal fina |
border | Borda de segurança ondulada aninhada |
lissajous | Figuras paramétricas de Lissajous |
moire | Interferência de círculos concêntricos |
spiral | Vórtice espiral arquimediano |
mesh | Grade hexagonal de favo de mel |
plume | Curvas fluidas semelhantes a penas espalhadas pela superfície |
constellation | Nós de estrela conectados por uma teia geométrica fina |
ripple | Frentes de onda elípticas sobrepostas de origens aleatórias |
full | Todos os padrões combinados |
none | Desabilitar filigrana |
| Formato | Entrada | Saída |
|---|
| PNG | sim | sim |
| JPEG | sim | sim |
| sim | sim | |
| WebP | sim | sim |
| TIFF | sim | sim |