Inhoud extraheren uit documenten in Aspose.Words voor Java

Inleiding tot het extraheren van inhoud uit documenten in Aspose.Words voor Java

In de wereld van documentverwerking is het extraheren van inhoud uit documenten een veel voorkomende vereiste. Of u nu tekst, tabellen, afbeeldingen of specifieke documentelementen moet extraheren, Aspose.Words voor Java biedt krachtige hulpmiddelen om deze taak een fluitje van een cent te maken. In deze uitgebreide handleiding leiden we u door het proces van het extraheren van inhoud uit documenten met behulp van Aspose.Words voor Java.

Vereisten

Voordat we ingaan op het extractieproces, moet je ervoor zorgen dat je aan de volgende vereisten voldoet:

  1. Aspose.Words voor Java: Aspose.Words voor Java moet geïnstalleerd en ingesteld zijn in uw Java-ontwikkelomgeving. Je kunt het downloaden vanhier.

  2. Een document om inhoud uit te extraheren: Voor deze handleiding gebruiken we een voorbeelddocument met de naam “Extract content.docx.” Zorg ervoor dat u een soortgelijk document gereed heeft om uit te pakken.

Inhoud extraheren tussen knooppunten op blokniveau

// Java-codevoorbeeld voor het extraheren van inhoud tussen knooppunten op blokniveau
Document doc = new Document("Your Directory Path" + "Extract content.docx");
Paragraph startPara = (Paragraph) doc.getLastSection().getChild(NodeType.PARAGRAPH, 2, true);
Table endTable = (Table) doc.getLastSection().getChild(NodeType.TABLE, 0, true);
ArrayList<Node> extractedNodes = ExtractContentHelper.extractContent(startPara, endTable, true);
Collections.reverse(extractedNodes);
while (extractedNodes.size() > 0) {
    endTable.getParentNode().insertAfter((Node) extractedNodes.get(0), endTable);
    extractedNodes.remove(0);
}
doc.save("Your Directory Path" + "ExtractContent.ExtractContentBetweenBlockLevelNodes.docx");

Inhoud tussen bladwijzers extraheren

//Java-codevoorbeeld voor het extraheren van inhoud tussen bladwijzers
Document doc = new Document("Your Directory Path" + "Extract content.docx");
Bookmark bookmark = doc.getRange().getBookmarks().get("Bookmark1");
BookmarkStart bookmarkStart = bookmark.getBookmarkStart();
BookmarkEnd bookmarkEnd = bookmark.getBookmarkEnd();
ArrayList<Node> extractedNodesInclusive = ExtractContentHelper.extractContent(bookmarkStart, bookmarkEnd, true);
Document dstDoc = ExtractContentHelper.generateDocument(doc, extractedNodesInclusive);
dstDoc.save("Your Directory Path" + "ExtractContent.ExtractContentBetweenBookmark.IncludingBookmark.docx");
ArrayList<Node> extractedNodesExclusive = ExtractContentHelper.extractContent(bookmarkStart, bookmarkEnd, false);
dstDoc = ExtractContentHelper.generateDocument(doc, extractedNodesExclusive);
dstDoc.save("Your Directory Path" + "ExtractContent.ExtractContentBetweenBookmark.WithoutBookmark.docx");

Inhoud extraheren tussen commentaarbereiken

// Java-codevoorbeeld voor het extraheren van inhoud tussen commentaarbereiken
Document doc = new Document("Your Directory Path" + "Extract content.docx");
CommentRangeStart commentStart = (CommentRangeStart) doc.getChild(NodeType.COMMENT_RANGE_START, 0, true);
CommentRangeEnd commentEnd = (CommentRangeEnd) doc.getChild(NodeType.COMMENT_RANGE_END, 0, true);
ArrayList<Node> extractedNodesInclusive = ExtractContentHelper.extractContent(commentStart, commentEnd, true);
Document dstDoc = ExtractContentHelper.generateDocument(doc, extractedNodesInclusive);
dstDoc.save("Your Directory Path" + "ExtractContent.ExtractContentBetweenCommentRange.IncludingComment.docx");
ArrayList<Node> extractedNodesExclusive = ExtractContentHelper.extractContent(commentStart, commentEnd, false);
dstDoc = ExtractContentHelper.generateDocument(doc, extractedNodesExclusive);
dstDoc.save("Your Directory Path" + "ExtractContent.ExtractContentBetweenCommentRange.WithoutComment.docx");

Inhoud tussen alinea’s extraheren

// Java-codevoorbeeld voor het extraheren van inhoud tussen alinea's
Document doc = new Document("Your Directory Path" + "Extract content.docx");
Paragraph startPara = (Paragraph) doc.getFirstSection().getBody().getChild(NodeType.PARAGRAPH, 6, true);
Paragraph endPara = (Paragraph) doc.getFirstSection().getBody().getChild(NodeType.PARAGRAPH, 10, true);
ArrayList<Node> extractedNodes = ExtractContentHelper.extractContent(startPara, endPara, true);
Document dstDoc = ExtractContentHelper.generateDocument(doc, extractedNodes);
dstDoc.save("Your Directory Path" + "ExtractContent.ExtractContentBetweenParagraphs.docx");

Inhoud extraheren tussen alineastijlen

// Java-codevoorbeeld voor het extraheren van inhoud tussen alineastijlen
Document doc = new Document("Your Directory Path" + "Extract content.docx");
ArrayList<Paragraph> parasStyleHeading1 = ExtractContentHelper.paragraphsByStyleName(doc, "Heading 1");
ArrayList<Paragraph> parasStyleHeading3 = ExtractContentHelper.paragraphsByStyleName(doc, "Heading 3");
Node startPara1 = parasStyleHeading1.get(0);
Node endPara1 = parasStyleHeading3.get(0);
ArrayList<Node> extractedNodes = ExtractContentHelper.extractContent(startPara1, endPara1, false);
Document dstDoc = ExtractContentHelper.generateDocument(doc, extractedNodes);
dstDoc.save("Your Directory Path" + "ExtractContent.ExtractContentBetweenParagraphStyles.docx");

Inhoud extraheren tussen uitvoeringen

// Java-codevoorbeeld voor het extraheren van inhoud tussen uitvoeringen
Document doc = new Document("Your Directory Path" + "Extract content.docx");
Paragraph para = (Paragraph) doc.getChild(NodeType.PARAGRAPH, 7, true);
Run startRun = para.getRuns().get(1);
Run endRun = para.getRuns().get(4);
ArrayList<Node> extractedNodes = ExtractContentHelper.extractContent(startRun, endRun, true);
Node node = (Node) extractedNodes.get(0);
System.out.println(node.toString(SaveFormat.TEXT));

Inhoud extraheren met DocumentVisitor

// Java-codevoorbeeld voor het extraheren van inhoud met DocumentVisitor
Document doc = new Document("Your Directory Path" + "Absolute position tab.docx");
MyDocToTxtWriter myConverter = new MyDocToTxtWriter();
doc.accept(myConverter);
System.out.println(myConverter.getText());

Inhoud extraheren met behulp van veld

// Java-codevoorbeeld voor het extraheren van inhoud met behulp van Field
Document doc = new Document("Your Directory Path" + "Extract content.docx");
DocumentBuilder builder = new DocumentBuilder(doc);
builder.moveToMergeField("Fullname", false, false);
FieldStart startField = (FieldStart) builder.getCurrentNode();
Paragraph endPara = (Paragraph) doc.getFirstSection().getChild(NodeType.PARAGRAPH, 5, true);
ArrayList<Node> extractedNodes = ExtractContentHelper.extractContent(startField, endPara, false);
Document dstDoc = ExtractContentHelper.generateDocument(doc, extractedNodes);
dstDoc.save("Your Directory Path" + "ExtractContent.ExtractContentUsingField.docx");

Inhoudsopgave extraheren

// Java-codevoorbeeld voor het extraheren van de inhoudsopgave
Document doc = new Document("Your Directory Path" + "Table of contents.docx");
for (Field field : doc.getRange().getFields()) {
    if (field.getType() == FieldType.FIELD_HYPERLINK) {
        FieldHyperlink hyperlink = (FieldHyperlink) field;
        if (hyperlink.getSubAddress() != null && hyperlink.getSubAddress().startsWith("_Toc")) {
            Paragraph tocItem = (Paragraph) field.getStart().getAncestor(NodeType.PARAGRAPH);
            System.out.println(tocItem.toString(SaveFormat.TEXT).trim());
            System.out.println("------------------");
            Bookmark bm = doc.getRange().getBookmarks().get(hyperlink.getSubAddress());
            Paragraph pointer = (Paragraph) bm.getBookmarkStart().getAncestor(NodeType.PARAGRAPH);
            System.out.println(pointer.toString(SaveFormat.TEXT));
        }
    }
}

Alleen tekst extraheren

// Java-codevoorbeeld voor het extraheren van alleen tekst
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.insertField("MERGEFIELD Field");
System.out.println("GetText() Result: " + doc.getText());
System.out.println("ToString() Result: " + doc.toString(SaveFormat.TEXT));

Inhoud extraheren op basis van stijlen

// Java-codevoorbeeld voor het extraheren van inhoud op basis van stijlen
Document doc = new Document("Your Directory Path" + "Styles.docx");
final String PARA_STYLE = "Heading 1";
final String RUN_STYLE = "Intense Emphasis";
ArrayList<Paragraph> paragraphs = paragraphsByStyleName(doc, PARA_STYLE);
System.out.println("Paragraphs with \"{paraStyle}\" styles ({paragraphs.Count}):");
for (Paragraph paragraph : paragraphs)
    System.out.println(paragraph.toString(SaveFormat.TEXT));
ArrayList<Run> runs = runsByStyleName(doc, RUN_STYLE);
System.out.println("\nRuns with \"{runStyle}\" styles ({runs.Count}):");
for (Run run : runs)
    System.out.println(run.getRange().getText());
}

public 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;
}

public ArrayList<Run> runsByStyleName(Document doc, String styleName) {
    ArrayList<Run> runsWithStyle = new ArrayList<Run>();
    NodeCollection runs = doc.getChildNodes(NodeType.RUN, true);
    for (Run run : (Iterable<Run>) runs) {
        if (run.getFont().getStyle().getName().equals(styleName))
            runsWithStyle.add(run);
    }
    return runsWithStyle;
}

Tekst extraheren en afdrukken

// Java-codevoorbeeld voor het extraheren en afdrukken van tekst
Document doc = new Document("Your Directory Path" + "Tables.docx");
Table table = (Table) doc.getChild(NodeType.TABLE, 0, true);
System.out.println("Contents of the table: ");
System.out.println(table.getRange().getText());
System.out.println("\nContents of the row: ");
System.out.println(table.getRows().get(1).getRange().getText());
System.out.println("\nContents of the cell: ");
System.out.println(table.getLastRow().getLastCell().getRange().getText());

Afbeeldingen extraheren naar bestanden

// Java-codevoorbeeld voor het extraheren van afbeeldingen naar bestanden
Document doc = new Document("Your Directory Path" + "Images.docx");
NodeCollection shapes = doc.getChildNodes(NodeType.SHAPE, true);
int imageIndex = 0;
for (Shape shape : (Iterable<Shape>) shapes) {
    if (shape.hasImage()) {
        String imageFileName = MessageFormat.format("Image.ExportImages.{0}_{1}",
                imageIndex, FileFormatUtil.imageTypeToExtension(shape.getImageData().getImageType()));
        shape.getImageData().save("Your Directory Path" + imageFileName);
        imageIndex++;
    }
}

Conclusie

Gefeliciteerd! Je hebt geleerd hoe je inhoud uit documenten kunt extraheren met Aspose.Words voor Java. Deze gids behandelde verschillende extractietechnieken, waaronder inhoud tussen knooppunten op blokniveau, bladwijzers, commentaarbereiken, alinea’s en meer. U bent nu uitgerust om de extractie van documentinhoud efficiënt uit te voeren in uw Java-toepassingen.

Veelgestelde vragen

Hoe extraheer ik inhoud uit specifieke documentsecties?

Om inhoud uit specifieke documentsecties te extraheren, kunt u de begin- en eindpunten van de secties identificeren en de juiste Aspose.Words voor Java-methoden gebruiken om inhoud daartussen te extraheren.

Kan ik inhoud extraheren uit met een wachtwoord beveiligde documenten?

Ja, Aspose.Words voor Java biedt functionaliteit om inhoud uit met een wachtwoord beveiligde documenten te extraheren. U kunt het wachtwoord opgeven wanneer u het document opent met behulp van deDocument klasse constructeur.

Hoe kan ik inhoud extraheren en opslaan in verschillende formaten, zoals platte tekst of HTML?

U kunt inhoud uit een document extraheren en in verschillende formaten opslaan met Aspose.Words voor Java. Nadat u de inhoud hebt geëxtraheerd, kunt u deDocument class-methoden om het op te slaan in formaten zoals platte tekst, HTML of andere.

Is er een manier om inhoud uit specifieke documentelementen, zoals tabellen of afbeeldingen, te extraheren?

Ja, u kunt inhoud extraheren uit specifieke documentelementen, zoals tabellen of afbeeldingen, met behulp van Aspose.Words voor Java. Identificeer de elementen die u wilt extraheren en gebruik vervolgens de juiste methoden om hun inhoud te extraheren.

Hoe kan ik het contentextractieproces in mijn Java-applicatie automatiseren?

Om het contentextractieproces in uw Java-toepassing te automatiseren, kunt u aangepaste code maken op basis van de technieken die in deze handleiding worden beschreven. U kunt ook logica implementeren om meerdere documenten te doorlopen en indien nodig inhoud te extraheren.