Captions play multiple important roles in a document. They not only provide explanations for images or tables but also help in organizing the document structure, referencing specific content, and ensuring consistency and standardization. They serve as guides, summaries, and emphasis within the document, enhancing readability and assisting readers in better understanding and utilizing the information presented in the document. This article will demonstrate how to use Spire.Doc for Java to add or remove captions in Word documents within a Java project.
- Add Image Captions to a Word document in Java
- Add Table Captions to a Word document in Java
- Remove Captions from a Word document in Java
Install Spire.Doc for Java
First, you're required to add the Spire.Doc.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.doc</artifactId> <version>12.11.0</version> </dependency> </dependencies>
Add Image Captions to a Word document in Java
By using the DocPicture.addCaption(String name, CaptionNumberingFormat format, CaptionPosition captionPosition) method, you can easily add descriptive captions to images within a Word document. The following are the detailed steps:
- Create an object of the Document class.
- Use the Document.addSection() method to add a section.
- Add a paragraph using Section.addParagraph() method.
- Use the Paragraph.appendPicture(String filePath) method to add a DocPicture image object to the paragraph.
- Add a caption using the DocPicture.addCaption(String name, CaptionNumberingFormat format, CaptionPosition captionPosition) method, numbering the captions in CaptionNumberingFormat.Number format.
- Update all fields using the Document.isUpdateFields(true) method.
- Save the resulting document using the Document.saveToFile() method.
- Java
import com.spire.doc.*; import com.spire.doc.documents.*; import com.spire.doc.fields.*; public class addPictureCaption { public static void main(String[] args) { // Create a Word document object Document document = new Document(); // Add a section to the document Section section = document.addSection(); // Add a new paragraph and insert an image into it Paragraph pictureParagraphCaption = section.addParagraph(); pictureParagraphCaption.getFormat().setAfterSpacing(10); DocPicture pic1 = pictureParagraphCaption.appendPicture("Data\\1.png"); pic1.setHeight(100); pic1.setWidth(100); // Add a caption to the image CaptionNumberingFormat format = CaptionNumberingFormat.Number; pic1.addCaption("Image", format, CaptionPosition.Below_Item); // Add another paragraph and insert another image into it pictureParagraphCaption = section.addParagraph(); DocPicture pic2 = pictureParagraphCaption.appendPicture("Data\\2.png"); pic2.setHeight(100); pic2.setWidth(100); // Add a caption to the second image pic2.addCaption("Image", format, CaptionPosition.Below_Item); // Update all fields in the document document.isUpdateFields(true); // Save the document as a docx file String result = "AddImageCaption.docx"; document.saveToFile(result, FileFormat.Docx_2016); // Close and dispose the document object to release resources document.close(); document.dispose(); } }
Add Table Captions to a Word document in Java
Similar to adding captions to images, to add a caption to a table, you need to call the Table.addCaption(String name, CaptionNumberingFormat format, CaptionPosition captionPosition) method. The detailed steps are as follows:
- Create an object of the Document class.
- Use the Document.addSection() method to add a section.
- Create a Table object and add it to the specified section in the document.
- Use the Table.resetCells(int rowsNum, int columnsNum) method to set the number of rows and columns in the table.
- Add a caption using the Table.addCaption(String name, CaptionNumberingFormat format, CaptionPosition captionPosition) method, numbering the captions in CaptionNumberingFormat.Number format.
- Update all fields using the Document.isUpdateFields(true) method.
- Save the resulting document using the Document.saveToFile() method.
- Java
import com.spire.doc.*; public class addTableCaption { public static void main(String[] args) { // Create a Word document object Document document = new Document(); // Add a section to the document Section section = document.addSection(); // Add a table to the section Table tableCaption = section.addTable(true); tableCaption.resetCells(3, 2); // Add a caption to the table tableCaption.addCaption("Table", CaptionNumberingFormat.Number, CaptionPosition.Below_Item); // Add another table to the section tableCaption = section.addTable(true); tableCaption.resetCells(2, 3); // Add a caption to the second table tableCaption.addCaption("Table", CaptionNumberingFormat.Number, CaptionPosition.Below_Item); // Update all fields in the document document.isUpdateFields(true); // Save the document as a docx file String result = "AddTableCaption.docx"; document.saveToFile(result, FileFormat.Docx_2016); // Close and dispose the document object to release resources document.close(); document.dispose(); } }
Remove Captions from a Word document in Java
In addition to adding captions, Spire.Doc for Java also supports deleting captions from a Word document. The steps involved are as follows:
- Create an object of the Document class.
- Use the Document.loadFromFile() method to load a Word document.
- Create a custom method named DetectCaptionParagraph(Paragraph paragraph), to determine if the paragraph contains a caption.
- Iterate through all the Paragraph objects in the document using a loop and use the custom method, DetectCaptionParagraph(Paragraph paragraph), to identify the paragraphs that contain captions and delete them.
- Save the resulting document using the Document.saveToFile() method.
- Java
import com.spire.doc.*; import com.spire.doc.documents.*; import com.spire.doc.fields.*; public class deleteCaptions { public static void main(String[] args) { // Create a Word document object Document document = new Document(); // Load the sample.docx file document.loadFromFile("Data/sample.docx"); Section section; // Iterate through all sections for (int i = 0; i < document.getSections().getCount(); i++) { section = document.getSections().get(i); // Iterate through paragraphs in reverse order for (int j = section.getBody().getParagraphs().getCount() - 1; j >= 0; j--) { // Check if the paragraph is a caption paragraph if (DetectCaptionParagraph(section.getBody().getParagraphs().get(j))) { // If it is a caption paragraph, remove it section.getBody().getParagraphs().removeAt(j); } } } // Save the document after removing captions String result = "RemoveCaptions.docx"; document.saveToFile(result, FileFormat.Docx_2016); // Close and dispose the document object to release resources document.close(); document.dispose(); } // Method to detect if a paragraph is a caption paragraph static Boolean DetectCaptionParagraph(Paragraph paragraph) { Boolean tag = false; Field field; // Iterate through child objects of the paragraph for (int i = 0; i < paragraph.getChildObjects().getCount(); i++) { if (paragraph.getChildObjects().get(i).getDocumentObjectType().equals(DocumentObjectType.Field)) { // Check if the child object is of type Field field = (Field) paragraph.getChildObjects().get(i); if (field.getType().equals(FieldType.Field_Sequence)) { // Check if the Field type is FieldSequence, indicating a caption field return true; } } } return tag; } }
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.