Java (486)
PDF annotations are notes or markers added to documents, which are great for making comments, giving explanations, giving feedback, etc. Co-creators of documents often communicate with annotations. However, when the issues associated with the annotations have been dealt with or the document has been finalized, it is necessary to remove the annotations to make the document more concise and professional. This article shows how to delete PDF annotations programmatically using Spire.PDF for Java.
- Remove the Specified Annotation
- Remove All Annotations from a Page
- Remove All Annotations from a PDF Document
Install Spire.PDF for Java
First of all, you're required to add the Spire.Pdf.jar file as a dependency in your Java program. The JAR file can be downloaded from this link. If you use Maven, you can easily import the JAR file in your application by adding the following code to your project's pom.xml file.
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.pdf</artifactId>
<version>12.10.3</version>
</dependency>
</dependencies>
Remove the Specified Annotation
Annotations are page-level document elements. Therefore, deleting an annotation requires getting the page where the annotation is located first, and then you can use the PdfPageBase.getAnnotationsWidget().removeAt() method to delete the annotation. The detailed steps are as follows.
- Create a PdfDocument instance.
- Load a PDF document using PdfDocument.loadFromFile() method.
- Get the first page using PdfDocument.getPages().get() method.
- Remove the first annotation from this page using PdfPageBase.getAnnotationsWidget().removeAt() method.
- Save the document using PdfDocument.saveToFile() method.
- Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
public class RemoveAnnotation {
public static void main(String[] args) {
//Create an object of PdfDocument
PdfDocument pdf = new PdfDocument();
//Load a PDF document
pdf.loadFromFile("C:/Annotations.pdf");
//Get the first page
PdfPageBase page = pdf.getPages().get(0);
//Remove the first annotation
page.getAnnotationsWidget().removeAt(0);
//Save the document
pdf.saveToFile("RemoveOneAnnotation.pdf");
}
}

Remove All Annotations from a Page
Spire.PDF for Java also provides PdfPageBase.getAnnotationsWidget().clear() method to remove all annotations in the specified page. The detailed steps are as follows.
- Create a PdfDocument instance.
- Load a PDF document using PdfDocument.loadFromFile() method.
- Get the first page using PdfDocument.getPages().get() method.
- Remove all annotations from the page using PdfPageBase.getAnnotationsWidget().clear() method.
- Save the document using PdfDocument.saveToFile() method.
- Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
public class RemoveAllAnnotationPage {
public static void main(String[] args) {
//Create an object of PdfDocument
PdfDocument pdf = new PdfDocument();
//Load a PDF document
pdf.loadFromFile("C:/Annotations.pdf");
//Get the first page
PdfPageBase page = pdf.getPages().get(0);
//Remove all annotations in the page
page.getAnnotationsWidget().clear();
//Save the document
pdf.saveToFile("RemoveAnnotationsPage.pdf");
}
}

Remove All Annotations from a PDF Document
To remove all annotations from a PDF document, we need to loop through all pages in the document and delete all annotations from each page. The detailed steps are as follows.
- Create a PdfDocument instance.
- Load a PDF document using PdfDocument.loadFromFile() method.
- Loop through all pages to delete annotations.
- Delete annotations in each page using PdfPageBase.getAnnotationsWidget().clear() method.
- Save the document using PdfDocument.saveToFile() method.
- Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
public class RemoveAllAnnotations {
public static void main(String[] args) {
//Create an object of PdfDocument
PdfDocument pdf = new PdfDocument();
//Load a PDF document
pdf.loadFromFile("C:/Users/Sirion/Desktop/Annotations.pdf");
//Loop through the pages in the document
for (Object page : (Iterable) pdf.getPages()) {
PdfPageBase pageBase = (PdfPageBase) page;
//Remove annotations in each page
pageBase.getAnnotationsWidget().clear();
}
//Save the document
pdf.saveToFile("RemoveAllAnnotations.pdf");
}
}

Apply for a Temporary License
If you'd like to remove the evaluation message from the generated documents, or to get rid of the function limitations, please request a 30-day trial license for yourself.
We have demonstrated how to insert text and image to textbox in a Word document by using Spire.Doc for Java. This article will demonstrate how to insert table to textbox in Word.
import com.spire.doc.*;
import com.spire.doc.documents.*;
import com.spire.doc.fields.*;
import java.awt.*;
public class insertTableIntoTextBox {
public static void main(String[] args) throws Exception{
//Create a new document; add a section and paragraph
Document doc = new Document();
Section section = doc.addSection();
Paragraph paragraph = section.addParagraph();
//Add a textbox to the paragraph
TextBox textbox = paragraph.appendTextBox(380, 100);
//Set the position of the textbox
textbox.getFormat().setHorizontalOrigin(HorizontalOrigin.Page);
textbox.getFormat().setHorizontalPosition(140);
textbox.getFormat().setVerticalOrigin(VerticalOrigin.Page);
textbox.getFormat().setVerticalPosition(50);
//Insert table to the textbox
Table table = textbox.getBody().addTable(true);
//Specify the number of rows and columns of the table
table.resetCells(4, 4);
//Define the data
String[][] data = new String[][]
{
{"Name", "Age", "Gender", "ID"},
{"John", "28", "Male", "0023"},
{"Steve", "30", "Male", "0024"},
{"Lucy", "26", "female", "0025"}
};
//Add data to the table
for (int i = 0; i < 4; i++) {
TableRow dataRow = table.getRows().get(i);
dataRow.getCells().get(i).setCellWidth(70,CellWidthType.Point);
dataRow.setHeight(22);
dataRow.setHeightType(TableRowHeightType.Exactly);
for (int j = 0; j < 4; j++) {
TextRange tableRange = table.getRows().get(i).getCells().get(j).addParagraph().appendText(data[i][j]);
tableRange.getCharacterFormat().setFontName("Arial");
tableRange.getCharacterFormat().setFontSize(11f);
tableRange.getOwnerParagraph().getFormat().setHorizontalAlignment(HorizontalAlignment.Center);
tableRange.getCharacterFormat().setBold(true);
}
}
//Set the background color for the first row
TableRow row = table.getRows().get(0);
for (int z = 0; z < row.getCells().getCount(); z++) {
row.getCells().get(z).getCellFormat().getShading().setBackgroundPatternColor(new Color(176,224,238));
}
//Apply style to the table
table.applyStyle(DefaultTableStyle.Table_Grid_5);
//Save the document
String output = "output/insertTableIntoTextBox1.docx";
doc.saveToFile(output, FileFormat.Docx_2013);
}
}
The effective screenshot after insert table to Textbox in Word:

This article will demonstrate how to hide and display Layers in a PDF document using Spire.PDF for Java.
Hide all layers:
import com.spire.pdf.*;
import com.spire.pdf.graphics.layer.*;
public class invisibleAllPdfLayers {
public static void main(String[] args) {
//Load the sample document
PdfDocument doc = new PdfDocument();
doc.loadFromFile("layerSample.pdf");
for (int i = 0; i < doc.getLayers().getCount(); i++)
{
//Show all the Pdf layers
//doc.getLayers().get(i).setVisibility(PdfVisibility.On);
//Set all the Pdf layers invisible
doc.getLayers().get(i).setVisibility(PdfVisibility.Off);
}
//Save to document to file
doc.saveToFile("output/invisibleAllPdfLayers.pdf", FileFormat.PDF);
}
}

Hide some of the PDF layers:
import com.spire.pdf.*;
import com.spire.pdf.graphics.layer.*;
public class invisibleParticularPdfLayers {
public static void main(String[] args) {
//Load the sample document
PdfDocument doc = new PdfDocument();
doc.loadFromFile("layerSample.pdf");
//Hide the first layer by index
doc.getLayers().get(0).setVisibility(PdfVisibility.Off);
//Hide the layer by name with blue line1
for (int i = 0; i < doc.getLayers().getCount(); i++)
{
if("blue line1".equals(doc.getLayers().get(i).getName())){
doc.getLayers().get(i).setVisibility(PdfVisibility.Off);
}
}
//Save to document to file
doc.saveToFile("output/invisiblePaticularPdfLayers.pdf", FileFormat.PDF);
}
}
