超链接是非常方便的功能,在 Word 文档中十分常见。读者只需点击超链接,就可跳转到网页、内部文件、邮箱以及正在阅读的文档中的某一部分。本文将教大家使用 Spire.Doc for Java 查找并导出 Word 文档中的超链接。
安装 Spire.Doc for Java
首先,您需要在 Java 程序中添加 Spire.Doc.jar 文件作为依赖项。您可以从 这个链接 下载 JAR 文件;如果您使用 Maven,则可以通过在 pom.xml 文件中添加以下代码导入 JAR 文件。
<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.doc</artifactId>
        <version>13.10.6</version>
    </dependency>
</dependencies>
查找并导出 Word 文档中的指定超链接
详细操作步骤如下:
- 创建 Document 的对象并用 Document.loadFromFile() 方法从磁盘导入 Word 文档。
- 创建 ArrayList<Field> 的对象。
- 循环遍历 Word 文档中所有节下的 DocumentObject 对象,找到所有超链接。
- 用 Field.get().getFieldText() 方法获取第一个超链接的文字,然后用 Field.get().getValue() 获取第一个超链接的地址。
- 用自定义的方法 writeStringToText() 保存第一个超链接的文本和地址到 TXT 文件。
- Java
import com.spire.doc.*;
import com.spire.doc.documents.*;
import com.spire.doc.fields.Field;
import java.io.*;
import java.util.ArrayList;
public class findHyperlinks {
    public static void main(String[] args) throws IOException {
        // 创建 Document 的对象并从磁盘导入Word文档
        String input = "D:/testp/示例.docx";
        Document doc = new Document();
        doc.loadFromFile(input);
        // 创建 ArrayList<Field> 的对象
        ArrayList<Field> hyperlinks = new ArrayList<Field>();
        // 循环遍历Word文档中所有节下的 DocumentObject 对象,找到所有超链接
        for (Section section : (Iterable<Section>) doc.getSections()) {
            for (DocumentObject object : (Iterable<DocumentObject>) section.getBody().getChildObjects()) {
                if (object.getDocumentObjectType().equals(DocumentObjectType.Paragraph)) {
                    Paragraph paragraph = (Paragraph) object;
                    for (DocumentObject cObject : (Iterable<DocumentObject>) paragraph.getChildObjects()) {
                        if (cObject.getDocumentObjectType().equals(DocumentObjectType.Field)) {
                            Field field = (Field) cObject;
                            if (field.getType().equals(FieldType.Field_Hyperlink)) {
                                hyperlinks.add(field);
                            }
                        }
                    }
                }
            }
        }
        //获取第一个超链接的文本和地址
        String hyperlinksText = hyperlinks.get(0).getFieldText();
        String hyperlinkAddress = hyperlinks.get(0).getValue();
        //将第一个超链接的文本和链接地址保存到TXT文件
        String output = "D:/javaOutput/超链接文本和地址.txt";
        writeStringToText("Text:\r\n" + hyperlinksText+ "\r\n" + "Link:\r\n" + hyperlinkAddress, output);
    }
    //创建一个自定义方法将超链接文字和地址保存到TXT文件
    public static void writeStringToText(String content, String textFileName) throws IOException {
        File file = new File(textFileName);
        if (file.exists())
        {
            file.delete();
        }
        FileWriter fWriter = new FileWriter(textFileName, true);
        try {
            fWriter.write(content);
        } catch (IOException ex) {
            ex.printStackTrace();
        } finally {
            try {
                fWriter.flush();
                fWriter.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    }
}
查找并导出 Word 文档中的所有超链接
详细操作步骤如下:
- 创建 Document 的对象并用 Document.loadFromFile() 方法从磁盘导入 Word 文档。
- 创建 ArrayList<Field> 的对象。
- 循环遍历 Word 文档中所有节下的 DocumentObject 对象,找到所有超链接。
- 用 Field.get().getFieldText() 方法获取所有超链接的文字,然后用 Field.get().getValue() 获取所有超链接的地址。
- 用自定义的方法 writeStringToText() 保存所有超链接的文本和地址到 TXT 文件。
- Java
import com.spire.doc.*;
import com.spire.doc.documents.*;
import com.spire.doc.fields.Field;
import java.io.*;
import java.util.ArrayList;
public class findHyperlinks {
    public static void main(String[] args) throws IOException {
        //创建 Document 的对象并从磁盘导入Word文档
        String input = "D:/testp/示例.docx";
        Document doc = new Document();
        doc.loadFromFile(input);
        //创建 ArrayList<Field> 的对象
        ArrayList<Field> hyperlinks = new ArrayList<Field>();
        String hyperlinkText = "";
        String hyperlinkAddress = "";
        //循环遍历Word文档中所有节下的 DocumentObject 对象,找到所有超链接
        for (Section section : (Iterable<Section>) doc.getSections()) {
            for (DocumentObject object : (Iterable<DocumentObject>) section.getBody().getChildObjects()) {
                if (object.getDocumentObjectType().equals(DocumentObjectType.Paragraph)) {
                    Paragraph paragraph = (Paragraph) object;
                    for (DocumentObject cObject : (Iterable<DocumentObject>) paragraph.getChildObjects()) {
                        if (cObject.getDocumentObjectType().equals(DocumentObjectType.Field)) {
                            Field field = (Field) cObject;
                            if (field.getType().equals(FieldType.Field_Hyperlink)) {
                                hyperlinks.add(field);
                                //获取所有超链接的文本和地址
                                hyperlinkText += field.getFieldText() + "\r\n";
                                hyperlinkAddress += field.getValue() + "\r\n";
                            }
                        }
                    }
                }
            }
        }
        //将所有超链接的文本和链接地址保存到TXT文件
        String output = "D:/javaOutput/超链接文本和地址.txt";
        writeStringToText("Text:\r\n " + hyperlinkText + "\r\n" + "Link:\r\n" + hyperlinkAddress + "\r\n", output);
    }
    //创建一个自定义方法将超链接文字和地址保存到TXT文件
    public static void writeStringToText(String content, String textFileName) throws IOException {
        File file = new File(textFileName);
        if (file.exists())
        {
            file.delete();
        }
        FileWriter fWriter = new FileWriter(textFileName, true);
        try {
            fWriter.write(content);
        } catch (IOException ex) {
            ex.printStackTrace();
        } finally {
            try {
                fWriter.flush();
                fWriter.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    }
}
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
 



 
					



