在阅读很长的 PDF 文档时,读者可能会疲于上下滚动来寻找想要的信息。因此,为了提升文档的阅读体验,文档作者可以在文档中添加导航工具。导航按钮正是一个非常实用的导航工具,尤其是用来导航到相关内容的位置特别方便。PDF 中的导航按钮是在页面上显示为带有提示文本的按钮,文档阅读者可以通过点击按钮轻松跳转到文档的相应位置。本文将展示如何使用 Spire.PDF for Java 通过程序实现添加导航按钮到 PDF 文档。
安装 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.10.3</version>
    </dependency>
</dependencies>
在 PDF 文档中插入导航按钮
Spire.PDF for Java 提供的 PdfButtonField 类代表 PDF 文档中的按钮,此类下的方法可以用于设置按钮的格式和点击按钮时执行的操作。我们可以创建自定义的 addNavigationButton() 方法,再将按钮、动作、矩形区域、文本作为参数传递给此方法,从而创建导航按钮。详细操作步骤如下:
- 创建 PdfDocument 类的对象。
- 使用 PdfDocument.loadFromFile() 方法载入 PDF 文档。
- 使用 PdfDocument.getPages().get() 方法获取文档最后一页。
- 使用 PdfDocument.setAllowCreateForm() 方法允许创建 PDF 表单命令。
- 创建 PdfButtonField 的对象。
- 创建 PdfNamedAction 的对象并将操作设置为跳转到首页。
- 定义按钮的位置和大小,以及要在按钮上显示的文本。
- 使用自定义的 addNavigationButton() 方法添加一个跳转到首页的导航按钮。
- 创建另一个 PdfButtonField 的对象。
- 创建一个 PdfGoToAction 的对象并将操作设置为跳转到第三页。
- 定义按钮的位置和大小,以及要在按钮上显示的文本。
- 使用自定义的 addNavigationButton() 方法添加一个跳转到第三页的导航按钮。
- 使用 PdfDocument.saveToFile() 方法保存文档。
- Java
import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.actions.PdfAction;
import com.spire.pdf.actions.PdfActionDestination;
import com.spire.pdf.actions.PdfGoToAction;
import com.spire.pdf.actions.PdfNamedAction;
import com.spire.pdf.fields.PdfButtonField;
import com.spire.pdf.fields.PdfForm;
import com.spire.pdf.general.PdfDestination;
import com.spire.pdf.graphics.PdfRGBColor;
import com.spire.pdf.graphics.PdfTrueTypeFont;
import java.awt.*;
import java.awt.geom.Rectangle2D;
public class addNavigationButton {
    public static void main(String[] args) throws Exception {
        //创建PdfDocument类的对象
        PdfDocument pdf = new PdfDocument();
        //载入PDF文档
        pdf.loadFromFile("资产负债表.pdf");
        //获取最后一页
        PdfPageBase lastPage = pdf.getPages().get(pdf.getPages().getCount() - 1);
        //允许在PDF文档中创建表单命令
        pdf.setAllowCreateForm(true);
        //创建PdfButtonField的对象
        PdfButtonField btn_1 = new PdfButtonField(lastPage, "btn_1");
        //创建dfNamedAction的对象并将操作设置为跳转到第一页
        PdfNamedAction namedAction = new PdfNamedAction(PdfActionDestination.FirstPage);
        //定义按钮的位置和大小,以及要在按钮上显示的文本
        float x = 150;
        float y = 300;
        float width = 170;
        float height = 22;
        Rectangle2D.Float rect = new Rectangle2D.Float(x, y, width, height);
        String text = "跳转到第一页";
        //使用自定义的方法添加一个跳转到首页的导航按钮
        addNavigationButton(btn_1, rect, text, namedAction);
        //创建另一个PdfButtonField的对象
        PdfButtonField btn_2 = new PdfButtonField(lastPage, "btn_2");
        //创建PdfGoToAction的对象并将操作设置为跳转到第三页
        PdfGoToAction goToAction = new PdfGoToAction(new PdfDestination(pdf.getPages().get(2)));
        //定义按钮的位置和大小,以及要在按钮上显示的文本
        rect = new Rectangle2D.Float( x, y + height + 5, width, height);
        String text1 = "跳转到第三页";
        //使用自定义的方法添加一个跳转到第三页的导航按钮
        addNavigationButton(btn_2, rect, text1, goToAction);
        //保存文档
        pdf.saveToFile("导航按钮.pdf", FileFormat.PDF);
        pdf.close();
    }
    static void addNavigationButton(PdfButtonField btn, Rectangle2D.Float rect, String text, PdfAction action) {
        //创建PdfTrueTypeFont的对象
        PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("黑体", Font.PLAIN, 13), true);
        //设置按钮的位置和大小
        btn.setBounds(rect);
        //设置按钮上文本的字体
        btn.setFont(font);
        //设置按钮上的文本
        btn.setText(text);
        //设置按钮颜色
        btn.setBackColor(new PdfRGBColor(Color.ORANGE));
        //设置按钮上文本的颜色
        btn.setForeColor(new PdfRGBColor(Color.blue));
        //设置按钮的边框颜色
        btn.setBorderColor(new PdfRGBColor(Color.green));
        //设置按钮在鼠标点击后的执行的操作
        btn.getActions().setMouseDown(action);
        //将按钮添加到文档中
        PdfForm form = new PdfForm();
        form.getFields().add(btn);
    }
}
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
 



 
					



