Anotações de forma via Java
Contents
[
Hide
]
As anotações de forma nesta seção abordam tipos de anotação geométrica, como quadrados, círculos, polígonos, polilinhas e linhas.
Adicionar anotações de quadrado, círculo, polígono e polilinha
Use estes exemplos quando precisar inserir anotações geométricas com cores personalizadas, opacidade, dados de popup ou arrays de pontos.
- Abra o PDF de origem em um objeto Document.
- Crie a anotação de forma necessária e configure seu retângulo, pontos e propriedades visuais.
- Adicione a anotação à página e salve o documento atualizado.
public static void squareAnnotationAdd(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
SquareAnnotation squareAnnotation = new SquareAnnotation(
document.getPages().get_Item(1),
new Rectangle(60, 600, 250, 450, true));
squareAnnotation.setTitle("John Smith");
squareAnnotation.setColor(Color.getBlue());
squareAnnotation.setInteriorColor(Color.getBlueViolet());
squareAnnotation.setOpacity(0.25);
document.getPages().get_Item(1).getAnnotations().add(squareAnnotation);
document.save(outputFile.toString());
}
}
public static void circleAnnotationAdd(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
CircleAnnotation circleAnnotation = new CircleAnnotation(
document.getPages().get_Item(1),
new Rectangle(270, 160, 483, 383, true));
circleAnnotation.setTitle("John Smith");
circleAnnotation.setColor(Color.getRed());
circleAnnotation.setInteriorColor(Color.getMistyRose());
circleAnnotation.setOpacity(0.5);
circleAnnotation.setPopup(new PopupAnnotation(
document.getPages().get_Item(1),
new Rectangle(842, 316, 1021, 459, true)));
document.getPages().get_Item(1).getAnnotations().add(circleAnnotation);
document.save(outputFile.toString());
}
}
public static void polygonAnnotationAdd(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
PolygonAnnotation polygonAnnotation = new PolygonAnnotation(
document.getPages().get_Item(1),
new Rectangle(200, 300, 400, 400, true),
new Point[]{
new Point(200, 300),
new Point(220, 300),
new Point(250, 330),
new Point(300, 304),
new Point(300, 400)
});
polygonAnnotation.setTitle("John Smith");
polygonAnnotation.setColor(Color.getBlue());
polygonAnnotation.setInteriorColor(Color.getBlueViolet());
polygonAnnotation.setOpacity(0.25);
document.getPages().get_Item(1).getAnnotations().add(polygonAnnotation);
document.save(outputFile.toString());
}
}
public static void polylineAnnotationAdd(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
PolylineAnnotation polylineAnnotation = new PolylineAnnotation(
document.getPages().get_Item(1),
new Rectangle(270, 193, 571, 383, true),
new Point[]{
new Point(545, 150),
new Point(545, 190),
new Point(667, 190),
new Point(667, 110),
new Point(626, 111)
});
polylineAnnotation.setTitle("John Smith");
polylineAnnotation.setColor(Color.getRed());
polylineAnnotation.setPopup(new PopupAnnotation(
document.getPages().get_Item(1),
new Rectangle(842, 196, 1021, 338, true)));
document.getPages().get_Item(1).getAnnotations().add(polylineAnnotation);
document.save(outputFile.toString());
}
}
Obter anotações de quadrado, círculo, polígono e polilinha
Esses exemplos inspecionam a coleção de anotações da página e imprimem os retângulos das anotações geométricas por tipo.
- Abra o PDF de origem em um objeto Document.
- Itere pelas anotações da página.
- Filtre pelo valor necessário de AnnotationType e imprima o retângulo.
public static void squareAnnotationGet(Path inputFile) {
try (Document document = new Document(inputFile.toString())) {
for (Annotation annotation : document.getPages().get_Item(1).getAnnotations()) {
if (annotation.getAnnotationType() == AnnotationType.Square) {
System.out.println(annotation.getRect());
}
}
}
}
public static void circleAnnotationGet(Path inputFile) {
try (Document document = new Document(inputFile.toString())) {
for (Annotation annotation : document.getPages().get_Item(1).getAnnotations()) {
if (annotation.getAnnotationType() == AnnotationType.Circle) {
System.out.println(annotation.getRect());
}
}
}
}
public static void polygonAnnotationGet(Path inputFile) {
try (Document document = new Document(inputFile.toString())) {
for (Annotation annotation : document.getPages().get_Item(1).getAnnotations()) {
if (annotation.getAnnotationType() == AnnotationType.Polygon) {
System.out.println(annotation.getRect());
}
}
}
}
public static void polylineAnnotationGet(Path inputFile) {
try (Document document = new Document(inputFile.toString())) {
for (Annotation annotation : document.getPages().get_Item(1).getAnnotations()) {
if (annotation.getAnnotationType() == AnnotationType.PolyLine) {
System.out.println(annotation.getRect());
}
}
}
}
Excluir anotações de quadrado, círculo, polígono e polilinha
Use estes exemplos quando anotações de forma de um tipo específico devem ser removidas da página.
- Abra o PDF de origem em um objeto Document.
- Colete anotações do tipo geométrico necessário.
- Exclua as anotações coletadas e salve o arquivo de saída.
public static void squareAnnotationDelete(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
List<Annotation> toDelete = new ArrayList<>();
for (Annotation annotation : document.getPages().get_Item(1).getAnnotations()) {
if (annotation.getAnnotationType() == AnnotationType.Square) {
toDelete.add(annotation);
}
}
for (Annotation annotation : toDelete) {
document.getPages().get_Item(1).getAnnotations().delete(annotation);
}
document.save(outputFile.toString());
}
}
public static void circleAnnotationDelete(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
List<Annotation> toDelete = new ArrayList<>();
for (Annotation annotation : document.getPages().get_Item(1).getAnnotations()) {
if (annotation.getAnnotationType() == AnnotationType.Circle) {
toDelete.add(annotation);
}
}
for (Annotation annotation : toDelete) {
document.getPages().get_Item(1).getAnnotations().delete(annotation);
}
document.save(outputFile.toString());
}
}
public static void polygonAnnotationDelete(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
List<Annotation> toDelete = new ArrayList<>();
for (Annotation annotation : document.getPages().get_Item(1).getAnnotations()) {
if (annotation.getAnnotationType() == AnnotationType.Polygon) {
toDelete.add(annotation);
}
}
for (Annotation annotation : toDelete) {
document.getPages().get_Item(1).getAnnotations().delete(annotation);
}
document.save(outputFile.toString());
}
}
public static void polylineAnnotationDelete(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
List<Annotation> toDelete = new ArrayList<>();
for (Annotation annotation : document.getPages().get_Item(1).getAnnotations()) {
if (annotation.getAnnotationType() == AnnotationType.PolyLine) {
toDelete.add(annotation);
}
}
for (Annotation annotation : toDelete) {
document.getPages().get_Item(1).getAnnotations().delete(annotation);
}
document.save(outputFile.toString());
}
}
Adicionar uma anotação de linha
Este exemplo cria uma anotação de linha com pontas de seta, formatação de borda e uma nota pop-up.
- Abra o PDF de origem em um objeto Document.
- Crie um LineAnnotation com pontos de início e fim.
- Configure a aparência, adicione o popup e salve o documento.
public static void lineAnnotationAdd(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
LineAnnotation lineAnnotation = new LineAnnotation(
document.getPages().get_Item(1),
new Rectangle(550, 93, 562, 439, true),
new Point(556, 99),
new Point(556, 443));
lineAnnotation.setTitle("John Smith");
lineAnnotation.setColor(Color.getRed());
lineAnnotation.setStartingStyle(LineEnding.OpenArrow);
lineAnnotation.setEndingStyle(LineEnding.OpenArrow);
Border border = new Border(lineAnnotation);
border.setWidth(3);
lineAnnotation.setBorder(border);
PopupAnnotation popup = new PopupAnnotation(
document.getPages().get_Item(1),
new Rectangle(842, 124, 1021, 266, true));
lineAnnotation.setPopup(popup);
document.getPages().get_Item(1).getAnnotations().add(lineAnnotation);
document.save(outputFile.toString());
}
}
Obter anotações de linha
Este exemplo lê anotações de linha e imprime suas coordenadas de início e fim.
- Abra o PDF de origem em um objeto Document.
- Itere pelas anotações da página e selecione AnnotationType.
Line. - Converta cada correspondência para LineAnnotation e imprimir suas coordenadas.
public static void lineAnnotationsGet(Path inputFile) {
try (Document document = new Document(inputFile.toString())) {
for (Annotation annotation : document.getPages().get_Item(1).getAnnotations()) {
if (annotation.getAnnotationType() == AnnotationType.Line) {
LineAnnotation la = (LineAnnotation) annotation;
System.out.printf("[%s,%s]-[%s,%s]%n",
la.getStarting().getX(), la.getStarting().getY(),
la.getEnding().getX(), la.getEnding().getY());
}
}
}
}
Excluir anotações de linha
Use esta abordagem quando as anotações de linha devem ser removidas da página.
- Abra o PDF de origem em um objeto Document.
- Colete anotações do tipo AnnotationType.
Line. - Exclua as anotações coletadas e salve o documento.
public static void lineAnnotationsDelete(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
Page page = document.getPages().get_Item(1);
List<Annotation> toDelete = new ArrayList<>();
for (Annotation annotation : page.getAnnotations()) {
if (annotation.getAnnotationType() == AnnotationType.Line) {
toDelete.add(annotation);
}
}
for (Annotation annotation : toDelete) {
page.getAnnotations().delete(annotation);
}
document.save(outputFile.toString());
}
}