如何使用ApachePOI向word文档中的图像添加超链接?

jljoyd4f  于 2021-06-26  发布在  Java
关注(0)|答案(1)|浏览(614)

在word中,您可以通过右键单击图像并选择“链接…”来插入指向图像的超链接,如下所示:

如何使用apachepoi编程实现这一点?

smdnsysy

smdnsysy1#

在撰写本文时,还没有通过apachepoi库的最新可用版本(4.1.2)提供的api向图像添加超链接。
因此,唯一的方法是使用底层对象直接操纵文档的xml结构。
超链接作为关系存在于文档对象上,因此首先要在文档对象上创建一个新关系:

String relationshipId = paragraph.getDocument().getPackagePart()
        .addExternalRelationship(url, XWPFRelation.HYPERLINK.getRelation()).getId();

之后,取回 CTDrawingXWPFRun ,并插入新的 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以将其指向新的超链接。

相关问题