Como Aplicar Marcas d'água Personalizadas a PDFs em Java
IronPDF permite que desenvolvedores Java apliquem marcas d'água personalizadas a documentos PDF usando strings HTML com suporte total a CSS, permitindo controle completo sobre texto, imagens, opacidade, rotação e posicionamento para fins de marca ou segurança.
Início rápido: Aplicar marcas d'água a PDFs em Java
- Adicione IronPDF ao seu projeto Maven ou Gradle e defina sua chave de licença
- Carregue seu documento PDF usando
PdfDocument.fromFile() - Crie uma string HTML para sua marca d'água (texto, imagem ou ambos)
- Aplique a marca d'água usando
pdf.applyWatermark(watermarkHtml) - Salve o PDF com marca d'água usando
pdf.saveAs()
```java :title=QuickStartWatermark.java //:path=/static-assets/pdf/content-code-examples/how-to/custom-watermark/quickstart.java PdfDocument pdf = PdfDocument.fromFile(Paths.get("sample.pdf")); pdf.applyWatermark(""); pdf.saveAs("watermarked.pdf");
A marca d'água protege documentos PDF e comunica propriedade ou status do documento. Casos de uso comuns incluem marcar rascunhos como "Confidencial", incorporar um logotipo da empresa em cada página, ou indicar que um documento está pendente de aprovação. IronPDF adota uma abordagem HTML e CSS, o que significa que qualquer estilo que você pode expressar em um navegador (fontes personalizadas, opacidade, rotação, posicionamento absoluto) funciona idêntico em uma marca d'água.
Este guia aborda marcas d'água `text`, marcas d'água `image`, controles de opacidade e posição e carimbo avançado com [`TextStamper`](https://ironpdf.com/java/how-to/stamp-text-image-pdf/) e [`ImageStamper`](https://ironpdf.com/java/how-to/stamp-text-image-pdf/) . Para técnicas relacionadas de manipulação de PDF, veja o guia sobre [criando PDFs de HTML em Java](https://ironpdf.com/java/how-to/java-create-pdf-tutorial/) ou a visão geral de [adicionando fundos e frentes](https://ironpdf.com/java/how-to/background-foreground/).
<div class="hsg-featured-snippet">
<h3>Como aplicar marcas d'água em Java</h3>
<ol>
<li><a class="js-modal-open" data-modal-id="download-modal" href="#download-modal">Baixe a biblioteca Java para aplicar marcas d'água a PDFs.</a></li>
<li>Gere um novo PDF ou carregue um existente.</li>
<li>Configure a string HTML ou a imagem a ser usada como marca d'água.</li>
<li>Aplique a marca d'água utilizando o método apropriado.</li>
<li>Ajuste os parâmetros de opacidade, rotação e localização conforme necessário.</li>
</ol>
</div>
## Como faço para adicionar uma marca d'água de texto a um PDF?
Use o método `applyWatermark` para inserir texto em todas as páginas de um documento PDF. O método aceita uma string HTML, assim você pode estilizar a marca d'água com qualquer propriedade CSS: família de fontes, tamanho, cor, espaçamento entre letras ou sombra de texto. O exemplo abaixo marca um documento como "Confidencial" em vermelho, que cobre o cenário de trilha de auditoria e controle de acesso mais comum.
```java
//:path=/static-assets/pdf/content-code-examples/how-to/custom-watermark/text-watermark.java
import java.io.IOException;
import java.nio.file.Paths;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
public class Main {
public static void main(String[] args) throws IOException {
// Set the license key for IronPDF
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// Load an existing PDF document from file
PdfDocument pdf = PdfDocument.fromFile(Paths.get("sample.pdf"));
// HTML string defines the watermark appearance via CSS
String watermarkHtml = "<h1 style='color:red;'>Confidential</h1>";
// Apply the watermark to every page
pdf.applyWatermark(watermarkHtml);
// Save the watermarked PDF to a new file
pdf.saveAs("text_watermark.pdf");
}
}
A chamada applyWatermark adiciona a marca d'água a todas as páginas em uma única operação. Por padrão, a marca d'água é renderizada com opacidade de 50% e é centralizada em cada página. Para ativar todos os recursos da biblioteca, configure sua chave de licença IronPDF antes de qualquer operação de PDF. O HTML passado para applyWatermark aceita qualquer elemento HTML válido, então você pode incluir tags <div>, <span> ou tags <p> estilizadas para marcas d'água de várias linhas.
Qual é a aparência da marca d'água de texto?
O arquivo de saída text_watermark.pdf mostra a palavra Confidencial em vermelho, centralizada horizontal e verticalmente em cada página. A opacidade padrão de 50% mantém o conteúdo do documento legível sob a marca d'água. Para documentos de várias páginas, cada página recebe o mesmo carimbo sem a necessidade de repetição por página.
Para formatação de texto complexa, como carimbos diagonais de várias linhas, você pode combinar várias transformações CSS em uma única string HTML:
Para técnicas mais profundas de renderização de HTML aplicáveis a marcas d'água, veja o tutorial de conversão de HTML para PDF.
Como Posso Adicionar uma Marca d'água de Imagem a um PDF?
As marcas d'água de imagem funcionam através do mesmo método applyWatermark envolvendo uma tag <img> na string HTML. Arquivos PNG com fundos transparentes são ideais para marcas d'água de logotipo porque a transparência é preservada quando a imagem é composta na página do PDF. Formatos JPEG, GIF, SVG e BMP também são suportados.
//:path=/static-assets/pdf/content-code-examples/how-to/custom-watermark/image-watermark.java
import java.io.IOException;
import java.nio.file.Paths;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
public class Main {
public static void main(String[] args) throws IOException {
// Set the license key for IronPDF
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// Load an existing PDF document from file
PdfDocument pdf = PdfDocument.fromFile(Paths.get("sample.pdf"));
// Reference the image file path relative to the runtime working directory
String watermarkHtml = "<img src='logo.png' style='width:100px;'/>";
// Apply the image watermark to all pages
pdf.applyWatermark(watermarkHtml);
// Save the result
pdf.saveAs("image_watermark.pdf");
}
}
//:path=/static-assets/pdf/content-code-examples/how-to/custom-watermark/image-watermark.java
import java.io.IOException;
import java.nio.file.Paths;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
public class Main {
public static void main(String[] args) throws IOException {
// Set the license key for IronPDF
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// Load an existing PDF document from file
PdfDocument pdf = PdfDocument.fromFile(Paths.get("sample.pdf"));
// Reference the image file path relative to the runtime working directory
String watermarkHtml = "<img src='logo.png' style='width:100px;'/>";
// Apply the image watermark to all pages
pdf.applyWatermark(watermarkHtml);
// Save the result
pdf.saveAs("image_watermark.pdf");
}
}
As propriedades CSS na tag <img> controlam o tamanho, a posição e a transparência:
//:path=/static-assets/pdf/content-code-examples/how-to/custom-watermark/image-watermark-advanced.java
// Apply a 150px logo at 50% opacity, rotated 45 degrees counterclockwise
String advancedWatermarkHtml =
"<img src='logo.png' style='width:150px; opacity:0.5; transform:rotate(-45deg);'/>";
//:path=/static-assets/pdf/content-code-examples/how-to/custom-watermark/image-watermark-advanced.java
// Apply a 150px logo at 50% opacity, rotated 45 degrees counterclockwise
String advancedWatermarkHtml =
"<img src='logo.png' style='width:150px; opacity:0.5; transform:rotate(-45deg);'/>";
O caminho da imagem deve ser acessível a partir do diretório de trabalho da JVM em tempo de execução. Para implantações em servidor, use caminhos absolutos ou incorpore a imagem como um URI de dados Base64 dentro do atributo src para evitar problemas de resolução de caminho.
Quais formatos de arquivo são suportados para marcas d'água em imagens?
IronPDF suporta formatos de imagem PNG, JPEG, GIF, SVG e BMP em marcas d'água. PNG com fundo transparente produz os resultados mais limpos para marcas d'água de logotipo. O arquivo de saída image_watermark.pdf mostra a imagem com 100 pixels de largura, centralizada em cada página com 50% de opacidade padrão. Para extrair imagens de um PDF existente para uso em outra marca d'água, veja o guia sobre extração de imagens de PDFs.
Como Controlo a Opacidade e Alinhamento da Marca d'água?
O método applyWatermark aceita parâmetros de opacidade e alinhamento após a string HTML. Opacidade é um inteiro de 0 (totalmente transparente) a 100 (totalmente opaco). Valores entre 20 e 40 funcionam bem para a maioria dos documentos, mantendo a marca d'água visível sem obscurecer o texto do corpo. Os enums VerticalAlignment e HorizontalAlignment controlam qual canto ou borda da página será o alvo da marca d'água.
//:path=/static-assets/pdf/content-code-examples/how-to/custom-watermark/watermark-opacity-alignment.java
import java.io.IOException;
import java.nio.file.Paths;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.stamp.HorizontalAlignment;
import com.ironsoftware.ironpdf.stamp.VerticalAlignment;
public class Main {
public static void main(String[] args) throws IOException {
// Set the license key for IronPDF
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// Load an existing PDF document from file
PdfDocument pdf = PdfDocument.fromFile(Paths.get("sample.pdf"));
// Define the watermark HTML
String watermarkHtml = "<h1 style='color:blue;'>Confidential</h1>";
// Apply at 30% opacity, anchored to the top-left corner of each page
pdf.applyWatermark(watermarkHtml, 30, VerticalAlignment.TOP, HorizontalAlignment.LEFT);
// Save the result
pdf.saveAs("watermark_opacity_alignment.pdf");
}
}
//:path=/static-assets/pdf/content-code-examples/how-to/custom-watermark/watermark-opacity-alignment.java
import java.io.IOException;
import java.nio.file.Paths;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.stamp.HorizontalAlignment;
import com.ironsoftware.ironpdf.stamp.VerticalAlignment;
public class Main {
public static void main(String[] args) throws IOException {
// Set the license key for IronPDF
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// Load an existing PDF document from file
PdfDocument pdf = PdfDocument.fromFile(Paths.get("sample.pdf"));
// Define the watermark HTML
String watermarkHtml = "<h1 style='color:blue;'>Confidential</h1>";
// Apply at 30% opacity, anchored to the top-left corner of each page
pdf.applyWatermark(watermarkHtml, 30, VerticalAlignment.TOP, HorizontalAlignment.LEFT);
// Save the result
pdf.saveAs("watermark_opacity_alignment.pdf");
}
}
Combinando os três parâmetros opcionais, obtém-se nove opções distintas de posicionamento, uma para cada interseção de alinhamento vertical e horizontal. Para casos de uso que exigem marcas d'água em múltiplas posições na mesma página, ou marcas d'água aplicadas apenas a um intervalo específico de páginas, as classes stamper oferecem controle mais fino. Veja o guia de fundos e frentes para técnicas de composição em camadas.
Quais opções de alinhamento estão disponíveis?
O método applyWatermark suporta as seguintes constantes de alinhamento:
Alinhamento vertical (VerticalAlignment):
TOP- marca d'água ancorada na borda superiorMIDDLE- marca d'água centralizada verticalmenteBOTTOM- marca d'água ancorada na borda inferior
Alinhamento horizontal (HorizontalAlignment):
LEFT- marca d'água ancorada à borda esquerdaCENTER- marca d'água centralizada horizontalmenteRIGHT- marca d'água ancorada à borda direita
applyWatermark(html) sem parâmetros adicionais é equivalente a passar opacidade 50, VerticalAlignment.MIDDLE e HorizontalAlignment.CENTER.Combine qualquer valor vertical com qualquer valor horizontal para controle preciso. Para documentos que exigem vários carimbos sobrepostos, como um logotipo no canto superior direito e um aviso preliminar centralizado diagonalmente, aplique cada carimbo como uma chamada applyWatermark separada. Para sobreposições baseadas em anotações, veja o exemplo de anotações.
Como Aplico Marcas d'água Avançadas com TextStamper e ImageStamper?
O método applyWatermark atende à maioria das necessidades de marca d'água, mas as classes TextStamper e ImageStamper oferecem controle programático quando são necessárias coordenadas de pixel exatas, direcionamento por intervalo de páginas ou geração dinâmica de texto. Ambas as classes pertencem ao pacote com.ironsoftware.ironpdf.stamp.
TextStamper aceita um valor de string e expõe propriedades para fonte, tamanho da fonte, cor da fonte, alinhamento horizontal e vertical e opacidade. Também suporta rotação como um inteiro (graus). ImageStamper aceita um caminho de arquivo ou matriz de bytes para a imagem e expõe os mesmos controles de alinhamento e opacidade que TextStamper.
A principal vantagem das classes de carimbo sobre applyWatermark é a capacidade de direcionar páginas específicas. Passe uma lista de números de página indexados a zero para o método stamp para aplicar a marca d'água somente às páginas que precisam dela, por exemplo, carimbando apenas a capa de um relatório ou a página de aprovação final de um contrato.
//:path=/static-assets/pdf/content-code-examples/how-to/custom-watermark/text-stamper.java
import java.io.IOException;
import java.nio.file.Paths;
import java.util.Arrays;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.stamp.HorizontalAlignment;
import com.ironsoftware.ironpdf.stamp.TextStamper;
import com.ironsoftware.ironpdf.stamp.VerticalAlignment;
public class Main {
public static void main(String[] args) throws IOException {
// Set the license key for IronPDF
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// Load the target PDF document
PdfDocument pdf = PdfDocument.fromFile(Paths.get("sample.pdf"));
// Configure a TextStamper with custom font, rotation, and opacity
TextStamper stamper = new TextStamper();
stamper.setText("DRAFT");
stamper.setFontSize(72);
stamper.setFontColor("gray");
stamper.setOpacity(40);
stamper.setRotation(45);
stamper.setVerticalAlignment(VerticalAlignment.MIDDLE);
stamper.setHorizontalAlignment(HorizontalAlignment.CENTER);
// Apply the stamp only to pages 0 and 1 (zero-indexed)
pdf.stamp(stamper, Arrays.asList(0, 1));
// Save the stamped PDF
pdf.saveAs("text_stamped.pdf");
}
}
//:path=/static-assets/pdf/content-code-examples/how-to/custom-watermark/text-stamper.java
import java.io.IOException;
import java.nio.file.Paths;
import java.util.Arrays;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.stamp.HorizontalAlignment;
import com.ironsoftware.ironpdf.stamp.TextStamper;
import com.ironsoftware.ironpdf.stamp.VerticalAlignment;
public class Main {
public static void main(String[] args) throws IOException {
// Set the license key for IronPDF
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// Load the target PDF document
PdfDocument pdf = PdfDocument.fromFile(Paths.get("sample.pdf"));
// Configure a TextStamper with custom font, rotation, and opacity
TextStamper stamper = new TextStamper();
stamper.setText("DRAFT");
stamper.setFontSize(72);
stamper.setFontColor("gray");
stamper.setOpacity(40);
stamper.setRotation(45);
stamper.setVerticalAlignment(VerticalAlignment.MIDDLE);
stamper.setHorizontalAlignment(HorizontalAlignment.CENTER);
// Apply the stamp only to pages 0 and 1 (zero-indexed)
pdf.stamp(stamper, Arrays.asList(0, 1));
// Save the stamped PDF
pdf.saveAs("text_stamped.pdf");
}
}
O método stamp aceita um List<Integer> de números de página indexados a zero, proporcionando controle preciso sobre quais páginas recebem a marca d'água. Quando nenhuma lista de páginas é fornecida, o carimbo é aplicado a todas as páginas. Isso faz com que TextStamper seja a escolha certa sempre que seu aplicativo gerar marcas d'água dinamicamente, como incorporar um ID de transação exclusivo, nome de usuário ou carimbo de data/hora em cada PDF gerado.
TextStamper e ImageStamper compartilham uma classe base comum Stamper. Use a abordagem stamper sempre que sua aplicação gerar marcas d'água dinamicamente, por exemplo, embutindo um ID de transação único ou nome de usuário em cada PDF gerado.Para processamento em lote, como a aplicação de marcas d'água exclusivas e específicas do cliente em centenas de PDFs, carregue e aplique cada PdfDocument em um loop e, em seguida, chame saveAs antes da próxima iteração. IronPDF processa cada documento de forma independente, então o uso de memória permanece limitado. O guia de carimbos Java PDF aborda detalhadamente o ImageStamper e opções adicionais de carimbo, e a documentação Java do IronPDF fornece a referência completa da API.
Como o TextStamper Difere do applyWatermark?
O método applyWatermark é otimizado para gerar carimbos de várias páginas de forma rápida e consistente a partir de strings HTML. Os códigos TextStamper e ImageStamper abordam cenários em que o código applyWatermark não é suficiente: direcionar um subconjunto de páginas, aplicar vários carimbos distintos com configurações diferentes ou construir parâmetros de marca d'água programaticamente a partir de um banco de dados ou entrada do usuário. Ambas as abordagens produzem saída de qualidade vetorial embutida diretamente no fluxo de conteúdo do PDF, então as marcas d'água sobrevivem a regravações, impressão e leitores PDF que não respeitam camadas de conteúdo opcionais.
Desenvolvedores que trabalham com a biblioteca Apache PDFBox para marca d'água encontrarão a abordagem do IronPDF significativamente mais simples. O PDFBox exige a construção manual de fluxos de conteúdo e o gerenciamento de recursos, enquanto o applyWatermark aceita uma string HTML simples. O guia de marca d'água iText no Baeldung ilustra uma tarefa comparável com o iText, que envolve a criação de objetos PdfStampAnnotation e sua adição por meio de um pipeline PdfCanvas. O IronPDF reduz isso a uma única chamada de método.
Para verificar a saída da marca d'água programaticamente, extraia o conteúdo do texto com e verifique se a string da marca d'água é a esperada, ou use a discussão da comunidade Stack Overflow sobre manipulação de PDF em Java para padrões comuns de solução de problemas.
Quais São os Próximos Passos para Marcação de Água no PDF em Java?
Este guia abordou quatro abordagens para adicionar marcas d'água a PDFs com o IronPDF for Java: marcas d'água de texto simples via applyWatermark, marcas d'água de imagem usando tags HTML <img>, controle de opacidade e alinhamento por meio de parâmetros de método e marcação programática com TextStamper e ImageStamper para casos de uso avançados.
Inicie sua avaliação gratuita para testar a marcação em sua aplicação Java. A avaliação inclui acesso completo a todos os recursos de marcação e marca d'água sem limite de tempo na avaliação. Quando estiver pronto para implantar, veja opções de licenciamento para encontrar o nível que se adapta ao seu uso.
Pronto para ver o que mais você pode fazer? Confira a página completa do tutorial aqui: Guias de Como Fazer IronPDF for Java
Perguntas frequentes
Como adiciono uma marca d'água de texto a um PDF em Java?
Carregue seu PDF com PdfDocument.fromFile(), então chame pdf.applyWatermark() com uma string HTML. IronPDF renderiza qualquer HTML e CSS válidos, assim você pode definir cor, tamanho da fonte e opacidade diretamente no elemento.
Posso usar imagens como marcas d'água em Java?
Sim. Passe uma tag dentro de sua string HTML para applyWatermark(). Arquivos PNG com fundos transparentes produzem os resultados mais claros. Você também pode usar a classe ImageStamper para segmentar intervalos de páginas.
Como controlo a opacidade da marca d'água?
Passe um número inteiro de 0 (totalmente transparente) a 100 (totalmente opaco) como o segundo argumento para applyWatermark(). Valores entre 20 e 40 funcionam bem para a maioria dos documentos sem obscurecer o texto principal.
Posso rodar uma marca d'água na diagonal?
Sim. Adicione um estilo CSS transform: rotate(-45deg) ao seu elemento HTML antes de passá-lo para applyWatermark(). IronPDF aplica todas as transformações CSS3 padrão durante a renderização.
Qual é a diferença entre applyWatermark e TextStamper?
applyWatermark() é a abordagem mais rápida para aplicar o mesmo carimbo baseado em HTML a cada página. TextStamper oferece controle programático sobre fonte, rotação e uma lista de páginas para segmentar apenas páginas específicas.
Como posiciono uma marca d'água em uma localização específica?
Passe valores de enum VerticalAlignment e HorizontalAlignment como o terceiro e quarto argumentos para applyWatermark(). As posições disponíveis incluem TOP, MIDDLE, BOTTOM combinados com LEFT, CENTER, RIGHT.
Posso aplicar diferentes marcas d'água em diferentes páginas?
Sim. Use TextStamper ou ImageStamper e passe uma lista de números de páginas baseados em zero para o método stamp() para segmentar apenas as páginas que requerem uma marca d'água específica.
Posso combinar marcas d'água de texto e imagem no mesmo PDF?
Sim. Chame applyWatermark() várias vezes ou faça múltiplas chamadas stamp() antes de salvar. Cada chamada adiciona uma nova camada ao fluxo de conteúdo do PDF de forma independente.


