Hyperlinks in PowerPoint can point to websites, external resources, or other slides in the same presentation. For example, you might link a reference document from a project report or create a clickable table of contents for navigating between sections.
Java lets you add hyperlinks to text and images, create links between slides, and update or remove existing links.
This article walks through each of these operations with complete Java examples.
1. Add the Maven Dependency
First, add a PowerPoint processing library to your Java project.
If you're using Maven, include the following repository and dependency in your 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.presentation</artifactId>
<version>11.9.10</version>
</dependency>
</dependencies>
The examples below work with PPTX files. Each program saves its result to a separate file, so you can test the operations independently.
2. Add a Hyperlink to Text in PowerPoint
To make a piece of text clickable, you can assign a hyperlink to a PortionEx object, which represents a text range within a paragraph.
The following example creates a slide containing the text "View Project Resources" and links it to a web page.
import com.spire.presentation.*;
import com.spire.presentation.drawing.FillFormatType;
import java.awt.geom.Rectangle2D;
public class AddTextHyperlink {
public static void main(String[] args) throws Exception {
Presentation presentation = new Presentation();
try {
// Get the first slide
ISlide slide = presentation.getSlides().get(0);
// Add a text shape
Rectangle2D.Double rect =
new Rectangle2D.Double(60, 100, 400, 100);
IAutoShape shape = slide.getShapes()
.appendShape(ShapeType.RECTANGLE, rect);
// Remove the shape fill and border
shape.getFill().setFillType(FillFormatType.NONE);
shape.getLine().setWidth(0);
shape.getTextFrame().getParagraphs().clear();
// Create a paragraph and text range
ParagraphEx paragraph = new ParagraphEx();
PortionEx text = new PortionEx();
text.setText("View Project Resources");
text.setFontHeight(22);
// Set the hyperlink URL
text.getClickAction().setAddress(
"https://www.example.com/");
// Add the text to the shape
paragraph.getTextRanges().append(text);
shape.getTextFrame()
.getParagraphs().append(paragraph);
// Save the presentation
presentation.saveToFile(
"text-hyperlink.pptx",
FileFormat.PPTX_2013);
} finally {
presentation.dispose();
}
}
}
The key statement is:
text.getClickAction().setAddress("https://www.example.com/");
getClickAction() accesses the text's click action, while setAddress() assigns the destination URL.
The generated text-hyperlink.pptx contains the linked text. When you click it in Slide Show mode, PowerPoint opens the specified web page.
The URL in this example is a placeholder. Replace it with the actual destination when using the code.
3. Add a Hyperlink to an Image
Images can also act as hyperlinks. For example, a slide might contain a website logo or a document thumbnail that opens a related page when clicked.
Unlike text hyperlinks, which are associated with text ranges, image hyperlinks are attached to the image shape itself.
The following example inserts an image and assigns it a web address.
import com.spire.presentation.*;
import com.spire.presentation.drawing.FillFormatType;
import java.awt.geom.Rectangle2D;
public class AddImageHyperlink {
public static void main(String[] args) throws Exception {
Presentation presentation = new Presentation();
try {
// Get the first slide
ISlide slide = presentation.getSlides().get(0);
// Define the image position and size
Rectangle2D.Double rect =
new Rectangle2D.Double(80, 100, 240, 120);
// Insert an image
IEmbedImage image = slide.getShapes()
.appendEmbedImage(
ShapeType.RECTANGLE,
"logo.png",
rect);
// Remove the image border
image.getLine().setFillType(FillFormatType.NONE);
// Create a hyperlink
ClickHyperlink hyperlink =
new ClickHyperlink(
"https://www.example.com/");
// Assign the hyperlink to the image
image.setClick(hyperlink);
// Save the presentation
presentation.saveToFile(
"image-hyperlink.pptx",
FileFormat.PPTX_2013);
} finally {
presentation.dispose();
}
}
}
Here, appendEmbedImage() inserts logo.png into the slide, and setClick() assigns a ClickHyperlink object to the image.
The resulting image is clickable during the presentation.
Make sure logo.png exists in your application's working directory, or replace it with an absolute file path.
4. Link to Another Slide in the Same Presentation
Hyperlinks don't have to point to external websites. They can also navigate between slides within the same PowerPoint file.
This is useful for presentations with a table of contents or sections that users may want to visit in a different order.
To create an internal hyperlink, use ClickHyperlink(ISlide) to specify the destination slide.
The following example creates a two-slide presentation and adds a link on the first slide that opens the second.
import com.spire.presentation.*;
import com.spire.presentation.drawing.FillFormatType;
import java.awt.geom.Rectangle2D;
public class AddSlideHyperlink {
public static void main(String[] args) throws Exception {
Presentation presentation = new Presentation();
try {
// Get the first slide
ISlide firstSlide =
presentation.getSlides().get(0);
// Add a second slide
ISlide secondSlide =
presentation.getSlides().append();
// Add content to the second slide
Rectangle2D.Double targetRect =
new Rectangle2D.Double(60, 100, 450, 100);
IAutoShape targetShape = secondSlide.getShapes()
.appendShape(ShapeType.RECTANGLE, targetRect);
targetShape.getFill()
.setFillType(FillFormatType.NONE);
targetShape.getLine().setWidth(0);
targetShape.appendTextFrame("Project Details");
// Add a text shape to the first slide
Rectangle2D.Double linkRect =
new Rectangle2D.Double(60, 100, 450, 100);
IAutoShape linkShape = firstSlide.getShapes()
.appendShape(ShapeType.RECTANGLE, linkRect);
linkShape.getFill()
.setFillType(FillFormatType.NONE);
linkShape.getLine().setWidth(0);
linkShape.getTextFrame().getParagraphs().clear();
// Create the clickable text
ParagraphEx paragraph = new ParagraphEx();
PortionEx text = new PortionEx();
text.setText("Go to Project Details");
text.setFontHeight(22);
// Link to the second slide
ClickHyperlink hyperlink =
new ClickHyperlink(secondSlide);
text.setClickAction(hyperlink);
paragraph.getTextRanges().append(text);
linkShape.getTextFrame()
.getParagraphs().append(paragraph);
// Save the presentation
presentation.saveToFile(
"slide-hyperlink.pptx",
FileFormat.PPTX_2013);
} finally {
presentation.dispose();
}
}
}
The important part is:
ClickHyperlink hyperlink =
new ClickHyperlink(secondSlide);
text.setClickAction(hyperlink);
Instead of passing a URL, we pass the destination slide as an ISlide object.
When the presentation is in Slide Show mode, clicking "Go to Project Details" navigates directly to the second slide.
You can use the same approach with an existing presentation. Retrieve the destination slide using presentation.getSlides().get(index) and assign it to a hyperlink.
Remember that slide indexes start at zero, so get(0) refers to the first slide and get(2) refers to the third.
5. Edit an Existing Hyperlink in PowerPoint
Links sometimes need to be updated when a website address changes or a referenced resource moves.
Rather than recreating the linked text, you can retrieve its text range and update the display text or destination URL.
The following example opens text-hyperlink.pptx, created in Section 2, and changes both the displayed text and the web address.
import com.spire.presentation.*;
public class EditPptHyperlink {
public static void main(String[] args) throws Exception {
Presentation presentation = new Presentation();
try {
// Load the presentation
presentation.loadFromFile(
"text-hyperlink.pptx");
// Get the shape containing the hyperlink
IAutoShape shape = (IAutoShape) presentation
.getSlides().get(0)
.getShapes().get(0);
// Update the hyperlink display text
shape.getTextFrame()
.getTextRange()
.setText("View Updated Project Resources");
// Update the hyperlink URL
shape.getTextFrame()
.getTextRange()
.getClickAction()
.setAddress(
"https://www.wikipedia.org/");
// Save the updated presentation
presentation.saveToFile(
"edited-hyperlink.pptx",
FileFormat.PPTX_2013);
} finally {
presentation.dispose();
}
}
}
The code uses setText() to change the displayed text and getClickAction().setAddress() to update the link destination.
The resulting edited-hyperlink.pptx contains the updated hyperlink.
One thing to watch for: This example accesses the first shape on the first slide because the structure of the input file is known.
In an existing presentation, a text box may contain several text ranges, each with different formatting or hyperlinks. In that case, locate the specific linked text range before editing it rather than assuming the first shape or entire text frame contains the intended link.
6. Remove a Hyperlink Without Deleting the Text
If a hyperlink is no longer needed, you can remove its click action while keeping the text.
For text hyperlinks, this can be done using setClickAction(null).
The following example removes the hyperlink from text-hyperlink.pptx, leaving the displayed text unchanged.
import com.spire.presentation.*;
public class RemovePptHyperlink {
public static void main(String[] args) throws Exception {
Presentation presentation = new Presentation();
try {
// Load the presentation
presentation.loadFromFile(
"text-hyperlink.pptx");
// Get the shape containing the hyperlink
IAutoShape shape = (IAutoShape) presentation
.getSlides().get(0)
.getShapes().get(0);
// Remove the hyperlink
shape.getTextFrame()
.getTextRange()
.setClickAction(null);
// Save the presentation
presentation.saveToFile(
"removed-hyperlink.pptx",
FileFormat.PPTX_2013);
} finally {
presentation.dispose();
}
}
}
The key statement is:
shape.getTextFrame().getTextRange().setClickAction(null);
Setting the click action to null removes the hyperlink from the text range without deleting the text itself.
The text may still retain its previous formatting, such as an underline or a hyperlink color. If you want it to look like ordinary text again, you may also need to adjust its formatting.
As with the previous example, this code assumes that the text shape and hyperlink are already known. For more complex presentations, identify the appropriate text range before removing its click action.
7. Things to Keep in Mind
Test Hyperlinks in Slide Show Mode
In PowerPoint's editing view, clicking text or an image usually selects the object rather than immediately following its hyperlink.
To check whether a hyperlink works, open the presentation in Slide Show mode and click the linked element.
External Links Depend on Their Destinations
A hyperlink may be stored correctly in the PPTX file even if its target website is unavailable or its address has changed.
Links to local files can also stop working when a presentation is moved to another computer or the referenced files are relocated.
Text and Shape Hyperlinks Are Different
Text hyperlinks are associated with text ranges, while image and shape hyperlinks are typically associated with the shape itself.
This distinction matters when editing or removing links. You need to identify whether the link belongs to a text range or the containing shape before changing its click action.
Be Careful When Working with Existing Slides
The examples for editing and removing hyperlinks access a shape by its index because they use a presentation with a known structure.
For real-world presentations containing multiple text boxes, images, charts, or grouped shapes, don't assume the target hyperlink is always in the first shape. Locate the relevant object and text range before making changes.
Top comments (0)