栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

用Java中的Apache POI生成文档间超链接

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用Java中的Apache POI生成文档间超链接

解决方案分为两部分。

首先,我们需要一个

XWPFHyperlinkRun
目标是文档中的锚点。

其次,我们需要该目标锚,例如,它可以是文档中的书签。因此,我们需要在文档中创建此类书签。

不幸的是,

apache poi
到目前为止,仅高级别的类都不支持两者。因此,我们也需要低级类形式
ooxml-schemas

以下代码

apache poi 4.0.0
与ooxml-
schemas-1.4
结合使用。

import java.io.FileOutputStream;import org.apache.poi.xwpf.usermodel.*;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBookmark;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTHyperlink;import java.math.BigInteger;public class CreateWordHyperlinkBookmark { static XWPFHyperlinkRun createHyperlinkRunToAnchor(XWPFParagraph paragraph, String anchor) throws Exception {  CTHyperlink cthyperlink=paragraph.getCTP().addNewHyperlink();  cthyperlink.setAnchor(anchor);  cthyperlink.addNewR();  return new XWPFHyperlinkRun(    cthyperlink,    cthyperlink.getRArray(0),    paragraph   ); } static XWPFParagraph createBookmarkedParagraph(XWPFdocument document, String anchor, int bookmarkId) {  XWPFParagraph paragraph = document.createParagraph();  CTBookmark bookmark = paragraph.getCTP().addNewBookmarkStart();  bookmark.setName(anchor);  bookmark.setId(BigInteger.valueOf(bookmarkId));  XWPFRun run = paragraph.createRun();  paragraph.getCTP().addNewBookmarkEnd().setId(BigInteger.valueOf(bookmarkId));  return paragraph; } public static void main(String[] args) throws Exception {  XWPFdocument document = new XWPFdocument();  String anchor = "hyperlink_target";   int bookmarkId = 0;  XWPFParagraph paragraph = document.createParagraph();  XWPFRun run = paragraph.createRun();  run.setText("This is a text paragraph having ");  //create hyperlink run  XWPFHyperlinkRun hyperlinkrun = createHyperlinkRunToAnchor(paragraph, anchor);  hyperlinkrun.setText("a link to an bookmark anchor");  hyperlinkrun.setColor("0000FF");  hyperlinkrun.setUnderline(UnderlinePatterns.SINGLE);  run = paragraph.createRun();  run.setText(" in it.");  //some empty paragraphs  for (int i = 0; i < 10; i++) {   paragraph = document.createParagraph();  }  //create bookmarked paragraph as the hyperlink target  paragraph = createBookmarkedParagraph(document, anchor, bookmarkId++);  run = paragraph.getRuns().get(0);  run.setText("This is the target.");  FileOutputStream out = new FileOutputStream("CreateWordHyperlinkBookmark.docx");  document.write(out);  out.close();  document.close(); }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/516325.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号