【发布时间】:2021-04-11 21:34:15
【问题描述】:
【问题讨论】:
-
添加您的代码和您尝试过的内容
-
您在寻找答案文档或 docx?
标签: java ms-word hyperlink apache-poi
【问题讨论】:
标签: java ms-word hyperlink apache-poi
在撰写本文时,没有可用的 API 通过Apache POI library 的最新可用版本 (4.1.2) 来向图像添加超链接。
因此,唯一的办法就是直接使用底层对象来操作文档的XML结构。
超链接作为文档对象上的关系存在,所以首先要做的是在文档对象上创建一个新的关系:
String relationshipId = paragraph.getDocument().getPackagePart()
.addExternalRelationship(url, XWPFRelation.HYPERLINK.getRelation()).getId();
之后,从XWPFRun 中检索CTDrawing 对象,并插入新的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指向一个新的超链接。
【讨论】: