Java의 Word에서 하이퍼링크 찾기 및 추출

11793 단어
Microsoft Word에서는 외부 파일, 웹사이트, 이메일 또는 문서 내의 특정 부분으로 연결되는 하이퍼링크를 삽입할 수 있습니다. 특정 상황에서는 이러한 하이퍼링크를 추출해야 할 수도 있습니다. 이 기사에서는 무료 라이브러리를 사용하여 Java의 Word 문서에서 기존의 모든 하이퍼링크를 찾고 추출하는 방법을 공유합니다.

가져오기 종속성



방법 1: free library (Free Spire.Doc for Java)을 다운로드하고 압축을 풉니다. 그런 다음 Spire.Doc.jar 파일을 Java 애플리케이션에 종속성으로 추가합니다.
방법 2: 다음 구성을 pom.xml에 추가하여 maven 프로젝트에 jar 종속성을 직접 추가합니다.

<repositories>
   <repository>
      <id>com.e-iceblue</id>
      <name>e-iceblue</name>
      <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
   </repository>
</repositories>
<dependencies>
   <dependency>
      <groupId>e-iceblue</groupId>
      <artifactId>spire.doc.free</artifactId>
      <version>5.2.0</version>
   </dependency>
</dependencies>


샘플 코드



무료 Spire.Doc for Java는 Field.get().getFieldText() 메서드를 제공하여 하이퍼링크의 텍스트를 가져온 다음 Field.get().getValue() 메서드를 사용하여 링크를 가져올 수 있습니다. 전체 샘플 코드는 아래와 같습니다.

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 {
        //Create a Document instance and load a Word document from file
        Document doc = new Document();
        doc.loadFromFile("E:\\Files\\sample0.docx");

        //Create an object of ArrayList
        ArrayList hyperlinks = new ArrayList();
        String hyperlinkText = "";
        String hyperlinkAddress = "";

        //Iterate through the items in the sections to find all hyperlinks
        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);

                                //Get the texts and links of all hyperlinks
                                hyperlinkText += field.getFieldText() + "\r\n";
                                hyperlinkAddress += field.getValue() + "\r\n";
                            }
                        }
                    }
                }
            }
        }

        //Save the texts and the links of the hyperlinks to a TXT file
        writeStringToText("Text:\r\n " + hyperlinkText + "\r\n" + "Link:\r\n" + hyperlinkAddress + "\r\n", "HyperlinksTextsAndLinks.txt");
    }

    //Create a method to write the text and link of hyperlinks to a TXT file
    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();
            }
        }
    }
}


좋은 웹페이지 즐겨찾기