欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java 添加、更新和移除PDF超链接的实现方法

程序员文章站 2023-10-22 23:49:04
简介 pdf超链接用一个简单的链接包含了大量的信息,满足了人们在不占用太多空间的情况下渲染外部信息的需求。下面将介绍通过java 在pdf中添加、更新和移除超链接。 (...

简介

pdf超链接用一个简单的链接包含了大量的信息,满足了人们在不占用太多空间的情况下渲染外部信息的需求。下面将介绍通过java 在pdf中添加、更新和移除超链接。

(一)工具使用:

•  free spire.pdf for java 2.4.4(免费版)
• intellij idea

(二)导入jar文件包:
•  方式一:首先,从官网获取free spire.pdf for java文件包。

step 1: 下载控件包之后解压,打开“project structure”界面。(以下是三种在idea中快速打开project structure界面的方式,可选其中任意一种)

Java 添加、更新和移除PDF超链接的实现方法

step 2:按以下操作步骤进行导入。① 选择“modules”—“dependencies”,添加外置jar包;② 进入"attach file or directories"界面选择jar文件路径,然后点击“ok”;③ 勾选jar路径选项,点击”ok”/”apply”;④ 导入完成。如下图:

Java 添加、更新和移除PDF超链接的实现方法

Java 添加、更新和移除PDF超链接的实现方法

•  方式二:使用maven配置导包。可以参考导入方法。

java代码示例参考

(一) 添加超链接到pdf

添加命名空间:

import com.spire.pdf.*;
import com.spire.pdf.annotations.*;
import com.spire.pdf.graphics.*;
import java.awt.*;
import java.awt.font.textattribute;
import java.awt.geom.*;
import java.util.hashmap;

1. 添加超文本连接

public class textlink {
 public static void main(string[] args) throws exception{
 //创建pdf文档
 pdfdocument doc = new pdfdocument();
 pdfpagebase page = doc.getpages().add();
 //初始化x,y坐标
 float y = 30;
 float x = 0;
 // 创建一个普通字体
 pdftruetypefont plainfont = new pdftruetypefont(new font("arial unicode ms",font.plain,13),true);
 //创建一个带下划线的字体
 hashmap<textattribute, object> hm = new hashmap<textattribute, object>();
 hm.put(textattribute.underline, textattribute.underline_on);
 hm.put(textattribute.size, 13);
 hm.put(textattribute.family, "arial");
 font font = new font(hm);
 pdftruetypefont underlinefont = new pdftruetypefont(font,true);

 //添加超文本链接到pdf
 string label= "超文本链接: ";
 pdfstringformat format = new pdfstringformat();
 format.setmeasuretrailingspaces(true);
 page.getcanvas().drawstring(label, plainfont, pdfbrushes.getorange(), 0, y, format);
 x = (float)plainfont.measurestring(label,format).getwidth();
 //创建pdftextweblink对象
 pdftextweblink weblink = new pdftextweblink();
 //设置超链接文本
 weblink.settext("主页");
 //设置超链接地址
 weblink.seturl("https://www.google.com");
 //设置超链接字体和字体颜色
 weblink.setfont(plainfont);
 weblink.setbrush(pdfbrushes.getblue());
 //添加超链接到页面
 weblink.drawtextweblink(page.getcanvas(), new point2d.float(x, y));
 y= y +40;
 //保存文档
 doc.savetofile("addlinks.pdf");
 doc.close();
 }
}

添加结果:

Java 添加、更新和移除PDF超链接的实现方法

2. 添加邮箱链接

public class emaillink {
 public static void main(string[] args) throws exception{
 //创建pdf文档
 pdfdocument doc = new pdfdocument();
 pdfpagebase page = doc.getpages().add();
 //初始化x,y坐标
 float y = 30;
 float x = 0;
 // 创建一个普通字体
 pdftruetypefont plainfont = new pdftruetypefont(new font("arial unicode ms",font.plain,13),true);
 //创建一个带下划线的字体
 hashmap<textattribute, object> hm = new hashmap<textattribute, object>();
 hm.put(textattribute.underline, textattribute.underline_on);
 hm.put(textattribute.size, 13);
 hm.put(textattribute.family, "arial");
 font font = new font(hm);
 pdftruetypefont underlinefont = new pdftruetypefont(font,true);
 //添加邮箱链接
 string label = "邮箱链接: ";
 pdfstringformat format = new pdfstringformat();
 format.setmeasuretrailingspaces(true);
 page.getcanvas().drawstring(label, plainfont, pdfbrushes.getorange(), 0, y, format);
 x = (float)plainfont.measurestring(label, format).getwidth();
 //创建pdftextweblink对象
 pdftextweblink weblink = new pdftextweblink();
 weblink = new pdftextweblink();
 //设置超链接文本
 weblink.settext("联系我们");
 //设置超链接地址
 weblink.seturl("mailto:123@qq.com");
 //设置超链接字体和字体颜色
 weblink.setfont(plainfont);
 weblink.setbrush(pdfbrushes.getblue());
 //添加超链接到页面
 weblink.drawtextweblink(page.getcanvas(), new point2d.float(x, y));
 y = y + 40;

 //保存文档
 doc.savetofile("addlinks.pdf");
 doc.close();
 }
}

添加结果:

Java 添加、更新和移除PDF超链接的实现方法

3.   添加文档链接

public class filelink {
 public static void main(string[] args) throws exception{
 //创建pdf文档
 pdfdocument doc = new pdfdocument();
 pdfpagebase page = doc.getpages().add();
 //初始化x,y坐标
 float y = 30;
 float x = 0;
 // 创建一个普通字体
 pdftruetypefont plainfont = new pdftruetypefont(new font("arial unicode ms",font.plain,13),true);
 //创建一个带下划线的字体
 hashmap<textattribute, object> hm = new hashmap<textattribute, object>();
 hm.put(textattribute.underline, textattribute.underline_on);
 hm.put(textattribute.size, 13);
 hm.put(textattribute.family, "arial");
 font font = new font(hm);
 pdftruetypefont underlinefont = new pdftruetypefont(font,true);
 //添加文档链接到pdf
 string label = "文档超链接: ";
 pdfstringformat format = new pdfstringformat();
 format.setmeasuretrailingspaces(true);
 page.getcanvas().drawstring(label, plainfont, pdfbrushes.getorange(), 0, y, format);
 x = (float)plainfont.measurestring(label, format).getwidth();
 page.getcanvas().drawstring("打开文件", plainfont, pdfbrushes.getblue(), x, y, format);
 rectangle2d rect = new rectangle2d.float(x,y+10,60,15);
 //创建一个文件超链接对象并加载文件
 pdffilelinkannotation filelinkannotation = new pdffilelinkannotation(rect,"c:\\users\\administrator\\desktop\\sample.pdf");
 filelinkannotation.setborder(new pdfannotationborder(0f));
 //添加文件到超链接
 ((pdfnewpage) ((page instanceof pdfnewpage) ? page : null)).getannotations().add(filelinkannotation);
 //保存文档
 doc.savetofile("addlinks.pdf");
 doc.close();
 }
}

添加结果:

Java 添加、更新和移除PDF超链接的实现方法

(二) 更新和移除超链接

      测试文档:

Java 添加、更新和移除PDF超链接的实现方法  

  使用pdfannotatiocollection 类和pdftextweblinkannotationwidget类创建超链注释集合并获取到第一个超链接,使用geturl ()方法设置超链接地址,removeat()方法移除超链接。

import com.spire.pdf.pdfdocument;
import com.spire.pdf.pdfpagebase;
import com.spire.pdf.annotations.pdfannotationcollection;
import com.spire.pdf.annotations.pdftextweblinkannotationwidget;
public class updatedellinks {
 public static void main(string[] args) throws exception {
 //创建pdf文档
 pdfdocument doc = new pdfdocument();
 //加载pdf源文件
 doc.loadfromfile("data/addlinks.pdf");
 //获取文档第一页
 pdfpagebase page = doc.getpages().get(0);
 //获取第一页超链接注释的集合
 pdfannotationcollection annotationcollection = page.getannotationswidget();
 //获取第一个超链接
 pdftextweblinkannotationwidget uriannotationwidget = (pdftextweblinkannotationwidget) annotationcollection.get(0);
 //设置超链接
 uriannotationwidget.seturl("www.baidu.com");
 //removeat()方法移除第二条超链接
 annotationcollection.removeat(1);
 //保存文件
 doc.savetofile("output.pdf");
 }
}

更新移除结果:

Java 添加、更新和移除PDF超链接的实现方法