Extraction de contenu à partir de documents dans Aspose.Words pour Java

Introduction à l’extraction de contenu à partir de documents dans Aspose.Words pour Java

Dans le monde du traitement documentaire, extraire le contenu des documents est une exigence courante. Que vous ayez besoin d’extraire du texte, des tableaux, des images ou des éléments de document spécifiques, Aspose.Words for Java fournit des outils puissants pour rendre cette tâche un jeu d’enfant. Dans ce guide complet, nous vous guiderons tout au long du processus d’extraction de contenu à partir de documents à l’aide d’Aspose.Words pour Java.

Conditions préalables

Avant de plonger dans le processus d’extraction, assurez-vous que les conditions préalables suivantes sont en place :

  1. Aspose.Words pour Java : Aspose.Words pour Java doit être installé et configuré dans votre environnement de développement Java. Vous pouvez le télécharger depuisici.

  2. Un document à partir duquel extraire le contenu : pour ce guide, nous utiliserons un exemple de document nommé “Extraire le contenu.docx”. Assurez-vous d’avoir un document similaire prêt à être extrait.

Extraction de contenu entre des nœuds de niveau bloc

// Exemple de code Java pour extraire du contenu entre des nœuds au niveau du bloc
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");

Extraire du contenu entre les signets

//Exemple de code Java pour extraire du contenu entre les signets
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");

Extraction de contenu entre des plages de commentaires

// Exemple de code Java pour extraire le contenu entre les plages de commentaires
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");

Extraire du contenu entre les paragraphes

// Exemple de code Java pour extraire le contenu entre les paragraphes
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");

Extraire du contenu entre les styles de paragraphe

// Exemple de code Java pour extraire du contenu entre les styles de paragraphe
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");

Extraction de contenu entre les exécutions

// Exemple de code Java pour extraire du contenu entre les exécutions
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));

Extraction de contenu à l’aide de DocumentVisitor

// Exemple de code Java pour extraire du contenu à l'aide de DocumentVisitor
Document doc = new Document("Your Directory Path" + "Absolute position tab.docx");
MyDocToTxtWriter myConverter = new MyDocToTxtWriter();
doc.accept(myConverter);
System.out.println(myConverter.getText());

Extraire du contenu à l’aide d’un champ

// Exemple de code Java pour extraire du contenu à l'aide de 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");

Extraction de la table des matières

// Exemple de code Java pour extraire la table des matières
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));
        }
    }
}

Extraction de texte uniquement

// Exemple de code Java pour extraire du texte uniquement
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));

Extraction de contenu basé sur des styles

// Exemple de code Java pour extraire du contenu en fonction des styles
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;
}

Extraction et impression de texte

// Exemple de code Java pour extraire et imprimer du texte
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());

Extraction d’images vers des fichiers

// Exemple de code Java pour extraire des images dans des fichiers
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++;
    }
}

Conclusion

Toutes nos félicitations! Vous avez appris à extraire le contenu de documents à l’aide d’Aspose.Words pour Java. Ce guide couvrait diverses techniques d’extraction, notamment le contenu entre les nœuds de niveau bloc, les signets, les plages de commentaires, les paragraphes, etc. Vous êtes désormais équipé pour gérer efficacement l’extraction du contenu des documents dans vos applications Java.

FAQ

Comment extraire le contenu de sections spécifiques d’un document ?

Pour extraire le contenu de sections spécifiques du document, vous pouvez identifier les points de début et de fin des sections et utiliser les méthodes Aspose.Words for Java appropriées pour extraire le contenu entre elles.

Puis-je extraire le contenu de documents protégés par mot de passe ?

Oui, Aspose.Words for Java fournit des fonctionnalités permettant d’extraire le contenu de documents protégés par mot de passe. Vous pouvez fournir le mot de passe lors de l’ouverture du document à l’aide duDocument constructeur de classe.

Comment puis-je extraire du contenu et l’enregistrer dans différents formats, tels que du texte brut ou du HTML ?

Vous pouvez extraire le contenu d’un document et l’enregistrer dans différents formats à l’aide d’Aspose.Words pour Java. Après avoir extrait le contenu, vous pouvez utiliser leDocument méthodes de classe pour l’enregistrer dans des formats tels que le texte brut, HTML ou autres.

Existe-t-il un moyen d’extraire le contenu d’éléments spécifiques du document, tels que des tableaux ou des images ?

Oui, vous pouvez extraire le contenu d’éléments de document spécifiques, tels que des tableaux ou des images, à l’aide d’Aspose.Words pour Java. Identifiez les éléments que vous souhaitez extraire, puis utilisez les méthodes appropriées pour extraire leur contenu.

Comment puis-je automatiser le processus d’extraction de contenu dans mon application Java ?

Pour automatiser le processus d’extraction de contenu dans votre application Java, vous pouvez créer du code personnalisé basé sur les techniques décrites dans ce guide. Vous pouvez également implémenter une logique pour parcourir plusieurs documents et extraire le contenu selon vos besoins.