Cómo aplicar marcas de agua personalizadas a PDFs en Java
IronPDF permite a los desarrolladores Java aplicar marcas de agua personalizadas a documentos PDF usando cadenas HTML con soporte completo de CSS, permitiendo un control total sobre el texto, las imágenes, la opacidad, la rotación y el posicionamiento para propósitos de marca o seguridad.
Inicio rápido: aplicar marcas de agua a archivos PDF en Java
- Agrega IronPDF a tu proyecto Maven o Gradle y establece tu clave de licencia
- Cargue su documento PDF usando
PdfDocument.fromFile() - Crea una cadena HTML para tu marca de agua (texto, imagen o ambos)
- Aplique la marca de agua usando
pdf.applyWatermark(watermarkHtml) - Guarde el PDF con marca de agua con
pdf.saveAs()
: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("<h1 style='color:red;'>Confidential</h1>");
pdf.saveAs("watermarked.pdf");
: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("<h1 style='color:red;'>Confidential</h1>");
pdf.saveAs("watermarked.pdf");
El marcaje de agua protege los documentos PDF y comunica la propiedad o el estado del documento. Los casos de uso comunes incluyen marcar borradores como "Confidencial," incrustar un logotipo de la compañía en cada página, o indicar que un documento está pendiente de aprobación. IronPDF sigue un enfoque de HTML y CSS, lo que significa que cualquier estilo que puedas expresar en un navegador (fuentes personalizadas, opacidad, rotación, posicionamiento absoluto) funciona de manera idéntica en una marca de agua.
Esta guía cubre text marcas de agua, image marcas de agua, controles de opacidad y posición, y estampado avanzado con TextStamper y ImageStamper. Para técnicas relacionadas de manipulación de PDF, consulta la guía sobre cómo crear PDFs desde HTML en Java o el resumen de cómo añadir fondos y primeros planos.
Cómo aplicar marcas de agua en Java
- Descargue la biblioteca Java para aplicar marcas de agua a PDF
- Renderizar un nuevo PDF o cargar uno existente
- Configure la cadena HTML o imagen que se usará como marca de agua
- Aplique la marca de agua usando el método apropiado
- Ajuste los parámetros de opacidad, rotación y ubicación según sea necesario
¿Cómo aplicar una marca de agua de texto a un PDF?
Utilice el método applyWatermark para estampar texto en cada página de un documento PDF. El método acepta una cadena HTML, por lo que puedes estilizar la marca de agua con cualquier propiedad CSS: familia de fuentes, tamaño, color, espaciado de letras o sombra de texto. El ejemplo a continuación marca un documento como "Confidencial" en rojo, lo que cubre el escenario más común de seguimiento de auditoría y control de acceso.
//: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");
}
}
//: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");
}
}
La llamada El archivo de salida Para formateos de texto complejos como sellos diagonales multicapa, puede combinar múltiples transformaciones CSS dentro de una sola cadena HTML: Para técnicas más profundas de renderización de HTML aplicables a marcas de agua, consulta el tutorial de conversión de HTML a PDF. Las marcas de agua de imagen funcionan a través del mismo método Las propiedades CSS en la etiqueta La ruta de la imagen debe ser accesible desde el directorio de trabajo de la JVM en tiempo de ejecución. Para implementaciones en servidor, use rutas absolutas o incruste la imagen como un URI de datos Base64 dentro del atributo IronPDF soporta formatos de imagen PNG, JPEG, GIF, SVG, y BMP en marcas de agua. PNG con fondo transparente produce los resultados más limpios para marcas de agua de logotipo. El archivo de salida El Iron Suite juega un papel crucial en nuestras operaciones. Estas son herramientas que aumentan la eficiencia en toda la empresa, incluyendo la creación de planos y la mejora en la gestión de inventario. El método Combinar los tres parámetros opcionales da nueve opciones de posicionamiento distintas, una para cada intersección de alineación vertical y horizontal. Para casos de uso que requieran marcas de agua en múltiples posiciones en la misma página, o marcas de agua aplicadas solo a un rango específico de páginas, las clases de estampador proporcionan un control más fino. Consulta la guía de fondos y primeros planos para técnicas de composición por capas. El método Alineación vertical ( Alineación horizontal ( La llamada por defecto Combina cualquier valor vertical con cualquier valor horizontal para un control preciso. Para documentos que requieren múltiples sellos superpuestos, como un logo en la esquina superior derecha y un aviso de borrador centrado diagonalmente, aplique cada sello como una llamada El método La principal ventaja de las clases de estampación sobre El método Para el procesamiento por lotes, como estampar cientos de PDFs con marcas de agua específicas del cliente, cargue y estampe cada El método Los desarrolladores que trabajan con la biblioteca Apache PDFBox para marcaje de agua encontrarán el enfoque de IronPDF significativamente más simple. PDFBox requiere la construcción manual de flujos de contenido y la gestión de recursos, mientras que Para verificar el resultado de la marca de agua programáticamente, extraiga el contenido de texto con Esta guía cubrió cuatro enfoques para marcar PDFs con IronPDF for Java: marcas de agua de texto simples a través de Inicia tu prueba gratuita para probar el marcaje de agua en tu aplicación Java. La prueba incluye acceso completo a todas las características de estampado y marcaje de agua sin límite de tiempo en la evaluación. Cuando estés listo para desplegar, consulta las opciones de licencia para encontrar la que se ajuste a tu uso. ¿Listo para ver qué más puedes hacer? Consulta la página completa del tutorial aquí: Guías de Cómo Hacer de IronPDF for Java Carga tu PDF con Sí. Pasa una etiqueta Pasa un entero de 0 (completamente transparente) a 100 (completamente opaco) como segundo argumento a Sí. Agrega un estilo CSS Pasa valores de enum Sí. Usa Sí. Llama a applyWatermark agrega la marca de agua a todas las páginas en una sola operación. Por defecto, la marca de agua se renderiza a un 50% de opacidad y está centrada en cada página. Para activar todas las funciones de la biblioteca, configura tu clave de licencia de IronPDF antes de realizar cualquier operación de PDF. El HTML pasado a applyWatermark acepta cualquier elemento HTML válido, por lo que puede incluir o etiquetas estilizadas para marcas de agua en varias líneas.
¿Qué aspecto tiene la marca de agua de texto?
text_watermark.pdf muestra la palabra Confidencial en rojo, centrada horizontal y verticalmente en cada página. La opacidad por defecto del 50% mantiene el contenido del documento legible bajo la marca de agua. Para documentos de múltiples páginas, cada página recibe la misma marca sin necesidad de un bucle por página.transform: rotate(-45deg) scale(1.5).
¿Cómo puedo añadir una marca de agua de imagen a un PDF?
applyWatermark envolviendo una etiqueta en la cadena HTML. Los archivos PNG con fondos transparentes son ideales para marcas de agua de logotipo porque la transparencia se conserva cuando la imagen se compone en la página del PDF. Los formatos JPEG, GIF, SVG, y BMP también son compatibles.//: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");
}
} controlan el tamaño, la posición y la transparencia://: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);'/>";src para evitar problemas de resolución de rutas.¿Qué formatos de archivo admiten las marcas de agua de imagen?
image_watermark.pdf muestra la imagen a 100 píxeles de ancho, centrada en cada página con un 50% de opacidad por defecto. Para extraer imágenes de un PDF existente para usarlas en otra marca de agua, consulta la guía sobre extracción de imágenes de PDFs.
¿Cómo controlo la opacidad y alineación de la marca de agua?
applyWatermark acepta parámetros de opacidad y alineación después de la cadena HTML. La opacidad es un entero de 0 (totalmente transparente) a 100 (totalmente opaco). Los valores entre 20 y 40 funcionan bien para la mayoría de los documentos, manteniendo visible la marca de agua sin oscurecer el texto del cuerpo. Las enumeraciones VerticalAlignment y HorizontalAlignment controlan qué esquina o borde de la página es el objetivo de la marca de agua.//: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");
}
}¿Qué opciones de alineación hay disponibles?
applyWatermark admite las siguientes constantes de alineación:VerticalAlignment):
TOP - marca de agua anclada al borde superiorMIDDLE - marca de agua centrada verticalmenteBOTTOM - marca de agua anclada al borde inferiorHorizontalAlignment):
LEFT - marca de agua anclada al borde izquierdoCENTER - marca de agua centrada horizontalmenteRIGHT - marca de agua anclada al borde derechoapplyWatermark(html) sin parámetros adicionales es equivalente a pasar opacidad 50, VerticalAlignment.MIDDLE, HorizontalAlignment.CENTER.applyWatermark separada. Para superposiciones basadas en anotaciones, consulta el ejemplo de anotaciones.
¿Cómo aplico marcas de agua avanzadas con TextStamper e ImageStamper?
applyWatermark maneja la mayoría de las necesidades de marcación de agua, pero las clases TextStamper y ImageStamper ofrecen control programático cuando se requieren coordenadas de píxel exactas, direccionamiento de rangos de páginas o generación dinámica de texto. Ambas clases pertenecen al paquete com.ironsoftware.ironpdf.stamp.TextStamper acepta un valor de cadena y expone propiedades para la fuente, tamaño de fuente, color de fuente, alineación horizontal y vertical, y opacidad. También soporta rotación como un entero (grados). ImageStamper acepta una ruta de archivo o una matriz de bytes para la imagen y expone los mismos controles de alineación y opacidad que TextStamper.applyWatermark es la capacidad de direccionar páginas específicas. Pasa una lista de números de página indexados desde cero al método stamp para aplicar la marca de agua solo a las páginas que la necesiten, por ejemplo, estampar solo la portada de un informe o la página final de aprobación de un 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");
}
}stamp acepta un List de números de página indexados desde cero, brindando control preciso sobre qué páginas reciben la marca de agua. Cuando no se proporciona una lista de páginas, el sello se aplica a todas las páginas. Esto convierte a TextStamper en la elección correcta siempre que su aplicación genere marcas de agua dinámicamente, como al incrustar un ID de transacción único, nombre de usuario o marca de tiempo en cada PDF generado.TextStamper y ImageStamper comparten una clase base común Stamper. Usa el enfoque de estampador siempre que tu aplicación genere marcas de agua dinámicamente, por ejemplo incrustando un ID de transacción único o nombre de usuario en cada PDF generado.PdfDocument en un bucle, luego llame a saveAs antes de la siguiente iteración. IronPDF procesa cada documento independientemente, por lo que el uso de memoria se mantiene limitado. La guía de estampado de PDF de Java cubre ImageStamper y opciones adicionales de estampado en detalle, y la documentación de IronPDF for Java proporciona la referencia completa de la API.¿Cómo difiere TextStamper de applyWatermark?
applyWatermark está optimizado para sellos rápidos y consistentes en varias páginas a partir de cadenas HTML. TextStamper y ImageStamper abordan situaciones donde applyWatermark es insuficiente: dirigir un subconjunto de páginas, aplicar múltiples sellos distintos con diferentes configuraciones, o construir parámetros de marca de agua programáticamente desde una base de datos o entrada del usuario. Ambos enfoques producen una salida de calidad vectorial incrustada directamente en el flujo de contenido del PDF, por lo que las marcas de agua sobreviven el re-guardado, la impresión y los lectores de PDF que no respetan capas de contenido opcionales.applyWatermark acepta una cadena HTML simple. La guía de marcación de agua iText en Baeldung ilustra una tarea comparable con iText, que implica crear objetos PdfStampAnnotation y añadirlos a través de un pipeline PdfCanvas. IronPDF reduce eso a una única llamada de método.PdfDocument.extractAllText() y verifique la cadena de marca de agua esperada, o use la discusión de la comunidad de Stack Overflow sobre manipulación de PDF en Java para patrones comunes de solución de problemas.
¿Cuáles son los siguientes pasos para el marcaje de agua de PDFs en Java?
applyWatermark, marcas de agua de imagen mediante etiquetas HTML , control de opacidad y alineación a través de parámetros de método, y estampado programático con TextStamper y ImageStamper para casos de uso avanzados.Preguntas Frecuentes
¿Cómo añado una marca de agua de texto a un PDF en Java?
PdfDocument.fromFile(), luego llama a pdf.applyWatermark() con una cadena HTML. IronPDF renderiza cualquier HTML y CSS válido, por lo que puedes establecer color, tamaño de fuente y opacidad directamente en el elemento.¿Puedo usar imágenes como marcas de agua en Java?
<img> dentro de tu cadena HTML a applyWatermark(). Los archivos PNG con fondos transparentes producen los resultados más claros. También puedes usar la clase ImageStamper para targeting de rango de páginas.¿Cómo controlo la opacidad de la marca de agua?
applyWatermark(). Los valores entre 20 y 40 funcionan bien para la mayoría de los documentos sin oscurecer el texto del cuerpo.¿Puedo rotar una marca de agua diagonalmente?
transform: rotate(-45deg) a tu elemento HTML antes de pasarlo a applyWatermark(). IronPDF aplica todas las transformaciones CSS3 estándar durante el renderizado.¿Cuál es la diferencia entre applyWatermark y TextStamper?
applyWatermark() es el enfoque más rápido para aplicar el mismo sello basado en HTML a cada página. TextStamper ofrece control programático sobre la fuente, rotación y una lista de páginas para targeting de páginas específicas únicamente.¿Cómo posiciono una marca de agua en una ubicación específica?
VerticalAlignment y HorizontalAlignment como el tercer y cuarto argumento a applyWatermark(). Las posiciones disponibles incluyen TOP, MIDDLE, BOTTOM combinadas con LEFT, CENTER, RIGHT.¿Puedo aplicar diferentes marcas de agua a diferentes páginas?
TextStamper o ImageStamper y pasa una lista de números de página indexados desde cero al método stamp() para targeting solo las páginas que requieren una marca de agua específica.¿Puedo combinar marcas de agua de texto e imágenes en el mismo PDF?
applyWatermark() varias veces o haz múltiples llamadas a stamp() antes de guardar. Cada llamada añade una nueva capa al flujo de contenido PDF independientemente.


