继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Java 在PDF中添加超链接

Eiceblue
关注TA
已关注
手记 107
粉丝 9
获赞 48

对特定元素添加超链接后,用户可以通过点击被链接的元素来激活这些链接,通常在被链接的元素下带有下划线或者以不同的颜色显示来进行区分。按照使用对象的不同,链接又可以分为:文本超链接,图像超链接,E-mail链接,锚点链接,多媒体文件链接,空链接等多种链接,本篇文章中将介绍在PDF中添加几种不同类型超链接的方法,包括:

  • 普通链接

  • 超文本链接

  • 邮箱链接

  • 文档链接

使用工具:Free Spire.PDF for Java (免费版)

Jar文件导入:

方法1:通过官网下载jar文件包。下载后,解压,并将lib文件夹下的Spire.Pdf.jar文件导入到java程序。

方法2:可通过maven仓库安装导入到你的maven项目。可参考导入方法


Java代码示例

import com.spire.pdf.annotations.*;
import com.spire.pdf.graphics.*;
import com.spire.pdf.*; 

import java.awt.*;
import java.awt.font.TextAttribute;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.util.HashMap; 

public class AddLinksToPdf {  
   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("https://www.baidu.com/", underlineFont, PdfBrushes.getBlue(), x, y+2);        
      y = y + 26;         
      
      //添加超文本链接到PDF        
      label= "超文本链接: ";        
      page.getCanvas().drawString(label, plainFont, PdfBrushes.getOrange(), 0, y, format);        
      x = (float)plainFont.measureString(label,format).getWidth();        
      PdfTextWebLink webLink = new PdfTextWebLink();        
      webLink.setText("百度主页");        
      webLink.setUrl("https://www.baidu.com/");        
      webLink.setFont(plainFont);        
      webLink.setBrush(PdfBrushes.getBlue());        
      webLink.drawTextWebLink(page.getCanvas(), new Point2D.Float(x, y));        
      y= y + 26;         
      
      //添加邮箱链接到PDF        
      label = "邮箱链接:  ";        
      page.getCanvas().drawString(label, plainFont, PdfBrushes.getOrange(), 0, y, format);        
      x = (float)plainFont.measureString(label, format).getWidth();        
      webLink = new PdfTextWebLink();        
      webLink.setText("联系我们");        
      webLink.setUrl("ask@baidu.com");        
      webLink.setFont(plainFont);        
      webLink.setBrush(PdfBrushes.getBlue());        
      webLink.drawTextWebLink(page.getCanvas(), new Point2D.Float(x, y));        
      y = y + 26;         
      
      //添加文档链接到PDF        
      label = "文档链接: ";        
      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+2,60,15);        
      PdfFileLinkAnnotation fileLinkAnnotation = new PdfFileLinkAnnotation(rect,"C:\\Users\\Administrator\\Desktop\\测试文件.docx");        
      fileLinkAnnotation.setBorder(new PdfAnnotationBorder(0f));        
      ((PdfNewPage) ((page instanceof PdfNewPage) ? page : null)).getAnnotations().add(fileLinkAnnotation);         
      
      //保存文档        
      doc.saveToFile("超链接.pdf");        
      doc.close();    
    }
 }

链接添加结果:

https://img.mukewang.com/5d3923ec000149eb06170373.jpg

(本文完)


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP