package demo;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFHyperlinkRun;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRelation;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBookmark;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTHyperlink;
import java.awt.*;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.math.BigInteger;
/**
* @author aszswaz
* @date 2021/3/9 12:41:32
*/
public class Demo {
public static void main(String[] args) throws IOException {
// demo01();
demo02();
}
public static void demo01() throws IOException {
XWPFDocument document = new XWPFDocument();
XWPFParagraph paragraph = document.createParagraph();
// 创建书签
String bookName = "demo";
CTBookmark ctBookmark = paragraph.getCTP().addNewBookmarkStart();
ctBookmark.setName(bookName);// 设置书签名称
ctBookmark.setId(BigInteger.valueOf(0));
paragraph.getCTP().addNewBookmarkEnd().setId(BigInteger.valueOf(0));
XWPFHyperlinkRun xwpfHyperlinkRun = paragraph.createHyperlinkRun("#" + bookName);
// 设置文本
xwpfHyperlinkRun.setText("demo link");
// 设置超链接的样式,蓝色带底纹
xwpfHyperlinkRun.setFontFamily("BatangChe");
xwpfHyperlinkRun.setFontSize(12);
xwpfHyperlinkRun.setColor(getColorString(new Color(0, 81, 144)));
document.write(new FileOutputStream("test-demo01.docx"));
}
private static String getColorString(Color color) {
return getHexString(color.getRed(), color.getGreen(), color.getBlue());
}
public static String getHexString(Integer... numbers) {
StringBuilder builder = new StringBuilder();
for (Integer number : numbers) {
String numberStr = Integer.toHexString(number);
//字符串长度不足2位,追加“0”
if (numberStr.length() < 2) {
builder.append("0");
}
builder.append(numberStr);
}
return builder.toString().toUpperCase();
}
public static void demo02() throws IOException {
XWPFDocument document = new XWPFDocument();
XWPFParagraph paragraph = document.createParagraph();
// 创建书签
String bookName = "demo";
CTBookmark ctBookmark = paragraph.getCTP().addNewBookmarkStart();
ctBookmark.setName(bookName);// 设置书签名称
ctBookmark.setId(BigInteger.valueOf(0));
paragraph.getCTP().addNewBookmarkEnd().setId(BigInteger.valueOf(0));
String rId = paragraph.getPart().getPackagePart().addExternalRelationship("", XWPFRelation.HYPERLINK.getRelation()).getId();
CTHyperlink cthyperLink = paragraph.getCTP().addNewHyperlink();
cthyperLink.setId(rId);
cthyperLink.setAnchor(bookName);// 使用这种方式创建超链接,须得这样设置的锚点才能有效(Anchor: 锚点)
cthyperLink.addNewR();
XWPFHyperlinkRun hyperlinkRun = new XWPFHyperlinkRun(
cthyperLink,
cthyperLink.getRArray(0),
paragraph
);
// 设置文本
hyperlinkRun.setText("demo link");
// 设置超链接的样式,蓝色带底纹
hyperlinkRun.setFontFamily("BatangChe");
hyperlinkRun.setFontSize(12);
hyperlinkRun.setColor(getColorString(new Color(0, 81, 144)));
document.write(new FileOutputStream("test-demo02.docx"));
}
}
关于poi的锚点生成介绍
最新推荐文章于 2022-05-21 17:53:52 发布