向 PDF 文档添加交互元素,如导航按钮、弹窗提示以及文件打开按钮,可以显著增强用户的参与度和文档的功能性,同时使得文档更加专业。借助 Spire.PDF for Java 库,开发者能够轻松地将这些互动功能整合到 PDF 文档中,从而创造出既多样化又用户友好的文档内容。本文将介绍如何使用 Spire.PDF for Java 通过 Java 代码在 PDF 文档中添加各种动作。
- 如何使用 Spire.PDF for Java 向 PDF 添加动作
- 使用 Java 在 PDF 中创建文档内跳转动作
- 使用 Java 在 PDF 中创建文件打开动作
- 使用 Java 在 PDF 中创建音频播放动作
- 使用 Java 在 PDF 中创建 JavaScript 动作
安装 Spire.PDF for Java
首先,您需要在 Java 程序中添加 Spire.Pdf.jar 文件作为依赖项。JAR 文件可以从此链接下载。如果您使用 Maven,则可以将以下代码添加到项目的 pom.xml 文件中,从而在应用程序中导入 JAR 文件。
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.pdf</artifactId>
<version>11.1.2</version>
</dependency>
</dependencies>
如何使用 Spire.PDF for Java 向 PDF 添加动作
Spire.PDF for Java 为开发者提供了向 PDF 文档添加各种动作的能力,例如文档内跳转动作、文件打开动作、音频播放动作和 JavaScript 执行动作。以下是常用动作对应的类及其描述的表格:
类名 | 描述 |
PdfGoToAction | 表示跳转到当前文档中的特定位置的动作 |
PdfLaunchAction | 表示打开文件的动作 |
PdfJavaScriptAction | 表示执行 JavaScript 代码的动作 |
PdfSoundAction | 表示播放音频的动作 |
有关更多动作类及其描述,请参考 Spire.PDF for Java 动作相关 API 文档。
向 PDF 文档添加动作主要通过以下两种方式:
1、使用注释添加动作
此方法通过创建一个动作并将其链接到页面上的注释来实现。当用户点击注释时,动作将被触发。
步骤:
- 创建 PdfDocument 实例,并使用 PdfDocument.LoadFromFile() 方法加载 PDF 文档。
- 创建动作实例并设置其属性。
- (可选)绘制提示文本或图像以指示动作的位置。
- 使用动作实例创建 PdfActionAnnotation 实例,并指定其在页面上的位置。
- 使用 PdfPageBase.getAnnotations.add() 方法将动作注释添加到页面。
- 使用 PdfDocument.SaveToFile() 方法保存文档。
2、将动作分配到文档事件
动作还可以分配到文档级别的事件(例如打开、关闭或打印文档)。当指定的事件发生时,与其绑定的动作会自动触发。
步骤:
- 创建 PdfDocument 实例,并使用 PdfDocument.LoadFromFile() 方法加载 PDF 文档。
- 创建动作实例并设置其属性。
- 使用以下方法将动作分配到文档事件:
- PdfDocument.setAfterOpenAction()
- PdfDocument.setAfterPrintAction()
- PdfDocument.setAfterSaveAction()
- PdfDocument.setBeforeCloseAction()
- PdfDocument.setBeforePrintAction()
- PdfDocument.setBeforeSaveAction()
- 使用 PdfDocument.SaveToFile() 方法保存文档。
使用 Java 在 PDF 中创建文档内跳转动作
开发者可以使用 PdfGoToAction 类在 PDF 文档中创建导航动作,让用户跳转到文档中的特定位置。以下是一个 Java 代码示例,演示如何在 PDF 文档中创建导航动作。
- Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.actions.PdfGoToAction;
import com.spire.pdf.annotations.PdfActionAnnotation;
import com.spire.pdf.general.PdfDestination;
import com.spire.pdf.graphics.PdfBrushes;
import com.spire.pdf.graphics.PdfStringFormat;
import com.spire.pdf.graphics.PdfTextAlignment;
import com.spire.pdf.graphics.PdfTrueTypeFont;
import java.awt.*;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
public class AddNavigationActionPDF {
public static void main(String[] args) {
// 创建一个 PdfDocument 实例
PdfDocument pdf = new PdfDocument();
// 加载 PDF 文件
pdf.loadFromFile("示例.pdf");
// 创建一个 PdfDestination 对象
PdfDestination destination = new PdfDestination(2, new Point2D.Float(0, 0), 0.8f);
// 使用 PdfDestination 对象创建一个 PdfGoToAction 对象
PdfGoToAction goToAction = new PdfGoToAction(destination);
// 在第一页上绘制一个矩形和提示文本
Rectangle2D rect = new Rectangle2D.Float(20, 35, 100, 15);
pdf.getPages().get(0).getCanvas().drawRectangle(PdfBrushes.getLightGray(), rect);
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("HarmonyOS Sans SC", Font.BOLD, 12), true);
PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Center);
pdf.getPages().get(0).getCanvas().drawString("点击跳转到第2页", font, PdfBrushes.getBlack(), rect, format);
// 使用 PdfGoToAction 对象创建一个 PdfActionAnnotation 对象
PdfActionAnnotation actionAnnotation = new PdfActionAnnotation(rect, goToAction);
// 将注释添加到第一页
pdf.getPages().get(0).getAnnotations().add(actionAnnotation);
// 保存文档
pdf.saveToFile("output/PDF文档内跳转动作.pdf");
pdf.close();
}
}
使用 Java 在 PDF 中创建文件打开动作
开发者可以使用 PdfLaunchAction 类在 PDF 文档中创建文件打开动作。以下是一个 Java 代码示例,展示如何向 PDF 文档添加文件打开动作。
- Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.actions.PdfFilePathType;
import com.spire.pdf.actions.PdfLaunchAction;
import com.spire.pdf.annotations.PdfActionAnnotation;
import com.spire.pdf.graphics.PdfBrushes;
import com.spire.pdf.graphics.PdfStringFormat;
import com.spire.pdf.graphics.PdfTextAlignment;
import com.spire.pdf.graphics.PdfTrueTypeFont;
import java.awt.*;
import java.awt.geom.Rectangle2D;
public class AddFileOpenActionPDF {
public static void main(String[] args) {
// 创建一个 PdfDocument 实例
PdfDocument pdf = new PdfDocument();
// 加载 PDF 文件
pdf.loadFromFile("示例.pdf");
// 创建一个 PdfLaunchAction 对象并设置文件路径
PdfLaunchAction launchAction = new PdfLaunchAction("C:/示例.pdf", PdfFilePathType.Absolute);
// 在第一页上绘制一个矩形和提示文本
Rectangle2D rect = new Rectangle2D.Float(20, 35, 100, 15);
pdf.getPages().get(0).getCanvas().drawRectangle(PdfBrushes.getLightGray(), rect);
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("HarmonyOS Sans SC", Font.BOLD, 12), true);
PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Center);
pdf.getPages().get(0).getCanvas().drawString("点击打开文件", font, PdfBrushes.getBlack(), rect, format);
// 使用 PdfLaunchAction 对象创建一个 PdfActionAnnotation 对象
PdfActionAnnotation actionAnnotation = new PdfActionAnnotation(rect, launchAction);
// 将注释添加到第一页
pdf.getPages().get(0).getAnnotations().add(actionAnnotation);
// 保存文档
pdf.saveToFile("output/PDF文件打开动作.pdf");
pdf.close();
}
}
使用 Java 在 PDF 中创建音频播放动作
PdfSoundAction 类可用于在 PDF 文档中处理音频播放,从而实现背景音乐、语音提醒等功能。以下是一个 Java 代码示例,演示如何在 PDF 文档中创建音频动作。
- Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.actions.PdfSoundAction;
import com.spire.pdf.annotations.PdfActionAnnotation;
import com.spire.pdf.general.PdfSoundChannels;
import com.spire.pdf.general.PdfSoundEncoding;
import com.spire.pdf.graphics.PdfImage;
import java.awt.geom.Rectangle2D;
public class AddSoundActionPDF {
public static void main(String[] args) {
// 创建一个 PdfDocument 实例
PdfDocument pdf = new PdfDocument();
// 加载 PDF 文件
pdf.loadFromFile("示例.pdf");
// 创建一个 PdfSoundAction 对象并设置音频属性
PdfSoundAction soundAction = new PdfSoundAction("Wave.wav");
soundAction.setRepeat(false); // 禁用循环播放
soundAction.getSound().setBits(16); // 设置音频位数
soundAction.getSound().setChannels(PdfSoundChannels.Stereo); // 设置立体声通道
soundAction.getSound().setEncoding(PdfSoundEncoding.Signed); // 设置音频编码
soundAction.getSound().setRate(44100); // 设置采样率
// 在第一页上绘制声音图标
PdfImage image = PdfImage.fromFile("Sound.jpg");
pdf.getPages().get(0).getCanvas().drawImage(image, new Rectangle2D.Float(40, 40, image.getWidth(), image.getHeight()));
// 使用 PdfSoundAction 对象在声音图标的位置创建一个 PdfActionAnnotation 对象
Rectangle2D rect = new Rectangle2D.Float(40, 40, image.getWidth(), image.getHeight());
PdfActionAnnotation actionAnnotation = new PdfActionAnnotation(rect, soundAction);
// 将注释添加到第一页
pdf.getPages().get(0).getAnnotations().add(actionAnnotation);
// 保存文档
pdf.saveToFile("output/PDF音频播放动作.pdf");
pdf.close();
}
}
使用 Java 在 PDF 中创建 JavaScript 动作
PdfJavaScriptAction 类允许开发者在 PDF 文档中创建 JavaScript 动作,从而实现动态表单的创建、用户输入的验证以及任务的自动化等功能。以下是一个 Java 代码示例,展示如何向 PDF 文档添加 JavaScript 动作。
- Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.actions.PdfJavaScriptAction;
public class AddJavaScriptActionPDF {
public static void main(String[] args) {
// 创建一个 PdfDocument 实例
PdfDocument pdf = new PdfDocument();
// 加载 PDF 文件
pdf.loadFromFile("示例.pdf");
// 定义 JavaScript 代码,并使用它创建一个 PdfJavaScriptAction 实例
String jsCode = """
app.alert({
cMsg: '欢迎阅读销售数据分析报告!\\n\\n这份报告包含了公司在过去一年内的销售数据,包括销售额、产品类别、销售地区和销售人员等信息。希望这份报告能帮助您了解公司的销售情况,识别销售趋势并制定相应的决策。',
nIcon: 3,
cTitle: '文档介绍'
});
""";
PdfJavaScriptAction javaScriptAction = new PdfJavaScriptAction(jsCode);
// 设置 JavaScript 动作为 PDF 文件打开后执行的动作
pdf.setAfterOpenAction(javaScriptAction);
// 保存文档
pdf.saveToFile("output/PDF JavaScript动作.pdf");
pdf.close();
}
}
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。