在word中,您可以通过右键单击图像并选择“链接…”来插入指向图像的超链接,如下所示:如何使用apachepoi编程实现这一点?
smdnsysy1#
在撰写本文时,还没有通过apachepoi库的最新可用版本(4.1.2)提供的api向图像添加超链接。因此,唯一的方法是使用底层对象直接操纵文档的xml结构。超链接作为关系存在于文档对象上,因此首先要在文档对象上创建一个新关系:
String relationshipId = paragraph.getDocument().getPackagePart() .addExternalRelationship(url, XWPFRelation.HYPERLINK.getRelation()).getId();
之后,取回 CTDrawing 从 XWPFRun ,并插入新的 CTHyperlink 要在图像上设置超链接,请执行以下操作:
CTDrawing
XWPFRun
CTHyperlink
if (run.getCTR().getDrawingList() != null && !run.getCTR().getDrawingList().isEmpty()) { CTDrawing ctDrawing = run.getCTR().getDrawingList().get(0); if (ctDrawing.getInlineList() != null && !ctDrawing.getInlineList().isEmpty()) { CTInline ctInline = ctDrawing.getInlineList().get(0); CTNonVisualDrawingProps docPr = ctInline.getDocPr(); if (docPr != null) { org.openxmlformats.schemas.drawingml.x2006.main.CTHyperlink hlinkClick = docPr.addNewHlinkClick(); hlinkClick.setId(relationshipId); } } }
如果 CTHyperlink 对象已存在,可以设置对象的id以将其指向新的超链接。
1条答案
按热度按时间smdnsysy1#
在撰写本文时,还没有通过apachepoi库的最新可用版本(4.1.2)提供的api向图像添加超链接。
因此,唯一的方法是使用底层对象直接操纵文档的xml结构。
超链接作为关系存在于文档对象上,因此首先要在文档对象上创建一个新关系:
之后,取回
CTDrawing
从XWPFRun
,并插入新的CTHyperlink
要在图像上设置超链接,请执行以下操作:如果
CTHyperlink
对象已存在,可以设置对象的id以将其指向新的超链接。