Agregar marcas de agua a PDF en Java
Contents
[
Hide
]
Los artefactos de marca de agua le permiten colocar marcas visuales persistentes en una página sin mezclarlas con el contenido principal del documento.
Extraer artefactos de marca de agua de un PDF
Utilice este ejemplo cuando necesite inspeccionar los artefactos de marca de agua existentes y leer su texto o posición.
- Abra el PDF de origen
Document. - Itere a través de la colección de artefactos de la página objetivo.
- Filtre los artefactos de paginación de marca de agua y imprima su texto y rectángulos.
public static void extractWatermarkFromPdf(Path inputFile) {
try (Document document = new Document(inputFile.toString())) {
for (Artifact artifact : document.getPages().get_Item(1).getArtifacts()) {
if (artifact.getType() == Artifact.ArtifactType.Pagination
&& artifact.getSubtype() == Artifact.ArtifactSubtype.Watermark) {
System.out.println(artifact.getText() + " " + artifact.getRectangle());
}
}
}
}
Agregar un artefacto de marca de agua
Utilice este ejemplo cuando la página debe mostrar una marca de agua de texto centrada con rotación personalizada, opacidad y colocación en el fondo.
- Abra el PDF de origen
Document. - Cree un
WatermarkArtifacty configure su estado de texto y la configuración de colocación. - Agregue la marca de agua a la página y guarde el archivo de salida.
public static void addWatermarkArtifact(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
TextState textState = new TextState();
textState.setFontSize(72);
textState.setForegroundColor(Color.getBlueViolet());
textState.setFontStyle(FontStyles.Bold);
textState.setFont(FontRepository.findFont("Arial"));
WatermarkArtifact watermark = new WatermarkArtifact();
watermark.setTextAndState("WATERMARK", textState);
watermark.setArtifactHorizontalAlignment(HorizontalAlignment.Center);
watermark.setArtifactVerticalAlignment(VerticalAlignment.Center);
watermark.setRotation(60);
watermark.setOpacity(0.2);
watermark.setBackground(true);
document.getPages().get_Item(1).getArtifacts().add(watermark);
document.save(outputFile.toString());
}
}
Eliminar artefactos de marca de agua
Utilice este enfoque cuando se deban eliminar los artefactos de marca de agua existentes de la página.
- Abra el PDF de origen
Document. - Itere a través de la colección de artefactos de página en orden inverso.
- Elimine los artefactos de paginación cuyo subtipo es marca de agua, luego guardar el documento.
public static void deleteWatermarkArtifact(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
for (int i = document.getPages().get_Item(1).getArtifacts().size(); i >= 1; i--) {
Artifact artifact = document.getPages().get_Item(1).getArtifacts().get_Item(i);
if (artifact.getType() == Artifact.ArtifactType.Pagination
&& artifact.getSubtype() == Artifact.ArtifactSubtype.Watermark) {
document.getPages().get_Item(1).getArtifacts().delete(artifact);
}
}
document.save(outputFile.toString());
}
}