Aspose.Words for Java에서 콘텐츠를 추출하기 위한 도우미 방법
Aspose.Words for Java의 콘텐츠 추출을 위한 도우미 메서드 소개
Aspose.Words for Java는 개발자가 프로그래밍 방식으로 Word 문서를 작업할 수 있게 해주는 강력한 라이브러리입니다. Word 문서 작업 시 일반적인 작업 중 하나는 문서에서 콘텐츠를 추출하는 것입니다. 이 기사에서는 Aspose.Words for Java를 사용하여 콘텐츠를 효율적으로 추출하기 위한 몇 가지 도우미 메서드를 살펴보겠습니다.
전제 조건
코드 예제를 살펴보기 전에 Java 프로젝트에 Aspose.Words for Java가 설치 및 설정되어 있는지 확인하세요. 다음에서 다운로드할 수 있습니다.여기.
도우미 방법 1: 스타일별 단락 추출
public static ArrayList<Paragraph> paragraphsByStyleName(Document doc, String styleName) {
// 지정된 스타일의 단락을 수집하는 배열을 만듭니다.
ArrayList<Paragraph> paragraphsWithStyle = new ArrayList<Paragraph>();
NodeCollection paragraphs = doc.getChildNodes(NodeType.PARAGRAPH, true);
// 지정된 스타일을 가진 단락을 찾으려면 모든 단락을 살펴보세요.
for (Paragraph paragraph : (Iterable<Paragraph>) paragraphs) {
if (paragraph.getParagraphFormat().getStyle().getName().equals(styleName))
paragraphsWithStyle.add(paragraph);
}
return paragraphsWithStyle;
}
이 방법을 사용하여 Word 문서에서 특정 스타일이 있는 단락을 추출할 수 있습니다. 이는 제목이나 블록 인용부호와 같은 특정 형식의 콘텐츠를 추출하려는 경우에 유용합니다.
도우미 방법 2: 노드별로 콘텐츠 추출
public static ArrayList<Node> extractContentBetweenNodes(Node startNode, Node endNode, boolean isInclusive) {
// 먼저 이 메소드에 전달된 노드가 사용 가능한지 확인하십시오.
verifyParameterNodes(startNode, endNode);
// 추출된 노드를 저장할 목록을 만듭니다.
ArrayList<Node> nodes = new ArrayList<Node>();
// 두 마커 중 하나가 주석 자체를 포함하여 주석의 일부인 경우 포인터를 움직여야 합니다.
// CommentRangeEnd 노드 뒤에 있는 Comment 노드로 전달됩니다.
if (endNode.getNodeType() == NodeType.COMMENT_RANGE_END && isInclusive) {
Node node = findNextNode(NodeType.COMMENT, endNode.getNextSibling());
if (node != null)
endNode = node;
}
// 필요한 경우 마커 노드를 분할하기 위해 이 메서드에 전달된 원래 노드의 기록을 유지합니다.
Node originalStartNode = startNode;
Node originalEndNode = endNode;
//블록 수준 노드(단락 및 표)를 기반으로 콘텐츠를 추출합니다. 상위 노드를 탐색하여 찾습니다.
// 마커 노드가 인라인인지 여부에 따라 첫 번째 노드와 마지막 노드의 콘텐츠를 분할합니다.
startNode = getAncestorInBody(startNode);
endNode = getAncestorInBody(endNode);
boolean isExtracting = true;
boolean isStartingNode = true;
// 문서에서 추출 중인 현재 노드입니다.
Node currNode = startNode;
// 콘텐츠 추출을 시작합니다. 모든 블록 수준 노드를 처리하고 특히 첫 번째 노드를 분할합니다.
// 단락 서식이 유지되도록 필요한 경우 마지막 노드를 사용합니다.
// 이 방법은 인수분해가 필요하기 때문에 일반 추출기보다 조금 더 복잡합니다.
// 인라인 노드, 필드, 북마크 등을 사용하여 추출할 때 유용합니다.
while (isExtracting) {
// 복사본을 얻으려면 현재 노드와 그 하위 노드를 복제하세요.
Node cloneNode = currNode.deepClone(true);
boolean isEndingNode = currNode.equals(endNode);
if (isStartingNode || isEndingNode) {
// 각 마커를 별도로 처리해야 하므로 대신 별도의 메서드에 전달합니다.
// 노드 인덱스를 유지하려면 먼저 End를 처리해야 합니다.
if (isEndingNode) {
// !isStartingNode: 마커가 동일한 노드인 경우 노드를 두 번 추가하지 마세요.
processMarker(cloneNode, nodes, originalEndNode, currNode, isInclusive,
false, !isStartingNode, false);
isExtracting = false;
}
//블록 수준 시작 및 끝 마커가 동일한 노드일 수 있으므로 조건부는 별도로 필요합니다.
if (isStartingNode) {
processMarker(cloneNode, nodes, originalStartNode, currNode, isInclusive,
true, true, false);
isStartingNode = false;
}
} else
// 노드는 시작 또는 끝 표시가 아닙니다. 단순히 목록에 복사본을 추가하기만 하면 됩니다.
nodes.add(cloneNode);
// 다음 노드로 이동하여 추출합니다. 다음 노드가 null인 경우
// 나머지 콘텐츠는 다른 섹션에서 찾을 수 있습니다.
if (currNode.getNextSibling() == null && isExtracting) {
// 다음 섹션으로 이동하세요.
Section nextSection = (Section) currNode.getAncestor(NodeType.SECTION).getNextSibling();
currNode = nextSection.getBody().getFirstChild();
} else {
// 본문의 다음 노드로 이동합니다.
currNode = currNode.getNextSibling();
}
}
// 인라인 북마크 모드와의 호환성을 위해 다음 단락(비어 있음)을 추가하세요.
if (isInclusive && originalEndNode == endNode && !originalEndNode.isComposite())
includeNextParagraph(endNode, nodes);
// 노드 마커 사이의 노드를 반환합니다.
return nodes;
}
이 방법을 사용하면 단락, 표 또는 기타 블록 수준 요소인지 여부에 관계없이 지정된 두 노드 사이의 콘텐츠를 추출할 수 있습니다. 인라인 마커, 필드 및 책갈피를 포함한 다양한 시나리오를 처리합니다.
도우미 방법 3: 새 문서 생성
public static Document generateDocument(Document srcDoc, ArrayList<Node> nodes) throws Exception {
Document dstDoc = new Document();
// 빈 문서에서 첫 번째 단락을 제거합니다.
dstDoc.getFirstSection().getBody().removeAllChildren();
// 목록의 각 노드를 새 문서로 가져옵니다. 노드의 원래 형식을 유지합니다.
NodeImporter importer = new NodeImporter(srcDoc, dstDoc, ImportFormatMode.KEEP_SOURCE_FORMATTING);
for (Node node : nodes) {
Node importNode = importer.importNode(node, true);
dstDoc.getFirstSection().getBody().appendChild(importNode);
}
return dstDoc;
}
이 방법을 사용하면 소스 문서에서 노드 목록을 가져와 새 문서를 생성할 수 있습니다. 노드의 원래 형식을 유지하므로 특정 콘텐츠가 포함된 새 문서를 만드는 데 유용합니다.
결론
Word 문서에서 콘텐츠를 추출하는 것은 많은 문서 처리 작업에서 중요한 부분일 수 있습니다. Aspose.Words for Java는 이 프로세스를 단순화하는 강력한 도우미 메서드를 제공합니다. 스타일별로 단락을 추출해야 하거나 노드 간 내용을 추출해야 하거나 새 문서를 생성해야 하는 경우 이러한 방법을 사용하면 Java 애플리케이션에서 Word 문서를 효율적으로 작업할 수 있습니다.
FAQ
Java용 Aspose.Words를 어떻게 설치하나요?
Aspose.Words for Java를 설치하려면 Aspose 웹사이트에서 다운로드할 수 있습니다. 방문하다여기 최신 버전을 얻으려면.
Word 문서의 특정 섹션에서 콘텐츠를 추출할 수 있나요?
예, 이 문서에 언급된 방법을 사용하여 Word 문서의 특정 섹션에서 콘텐츠를 추출할 수 있습니다. 추출하려는 섹션을 정의하는 시작 및 끝 노드를 지정하기만 하면 됩니다.
Aspose.Words for Java는 Java 11과 호환됩니까?
예, Aspose.Words for Java는 Java 11 이상 버전과 호환됩니다. 문제 없이 Java 애플리케이션에서 사용할 수 있습니다.
추출된 콘텐츠의 형식을 맞춤설정할 수 있나요?
예, 생성된 문서에서 가져온 노드를 수정하여 추출된 컨텐츠의 형식을 사용자 정의할 수 있습니다. Aspose.Words for Java는 귀하의 요구에 맞는 광범위한 형식 지정 옵션을 제공합니다.
Aspose.Words for Java에 대한 추가 문서와 예제는 어디서 찾을 수 있나요?
Aspose 웹사이트에서 Aspose.Words for Java에 대한 포괄적인 문서와 예제를 찾을 수 있습니다. 방문하다https://reference.aspose.com/words/java/ 자세한 문서 및 리소스를 확인하세요.