Adicionar marcas d'água ao PDF em Java
Contents
[
Hide
]
Os artefatos de marca d’água permitem que você coloque marcas visuais persistentes em uma página sem misturá-las ao conteúdo principal do documento.
Extrair artefatos de marca d’água de um PDF
Use este exemplo quando precisar inspecionar artefatos de marca d’água existentes e ler seu texto ou posição.
- Abra o PDF de origem em um objeto Document.
- Itere sobre a coleção de artefatos da página de destino.
- Filtre artefatos de paginação de marca d’água e imprima seu texto e retâ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());
}
}
}
}
Adicionar um artefato de marca d’água
Use este exemplo quando a página deve exibir uma marca d’água de texto centralizada com rotação personalizada, opacidade e posicionamento de fundo.
- Abra o PDF de origem em um objeto Document.
- Crie um WatermarkArtifact e configure seu estado de texto e configurações de posicionamento.
- Adicione a marca d’água à página e salve o arquivo de saída.
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());
}
}
Excluir artefatos de marca d’água
Use esta abordagem quando os artefatos de marca d’água existentes devem ser removidos da página.
- Abra o PDF de origem em um objeto Document.
- Itere pela coleção de artefatos da página em ordem reversa.
- Exclua artefatos de paginação cujo subtipo é marca d’água, então salve o 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());
}
}