Utilisation de balises de document structuré (SDT) dans Aspose.Words pour Java

Introduction à l’utilisation des balises de document structuré (SDT) dans Aspose.Words pour Java

Les balises de document structurées (SDT) sont une fonctionnalité puissante d’Aspose.Words pour Java qui vous permet de créer et de manipuler du contenu structuré dans vos documents. Dans ce guide complet, nous vous guiderons à travers les différents aspects de l’utilisation des SDT dans Aspose.Words pour Java. Que vous soyez débutant ou développeur expérimenté, vous trouverez des informations précieuses et des exemples pratiques dans cet article.

Commencer

Avant d’entrer dans les détails, configurons notre environnement et créons un SDT de base. Dans cette section, nous aborderons les sujets suivants :

  • Création d’un nouveau document
  • Ajout d’une balise de document structuré
  • Enregistrer le document
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Créer une balise de document structuré de type CHECKBOX
StructuredDocumentTag sdtCheckBox = new StructuredDocumentTag(doc, SdtType.CHECKBOX, MarkupLevel.INLINE);
builder.insertNode(sdtCheckBox);

// Enregistrez le document
doc.save("WorkingWithSDT.docx");

Vérification de l’état actuel d’une case à cocher SDT

Une fois que vous avez ajouté une case à cocher SDT à votre document, vous souhaiterez peut-être vérifier son état actuel par programme. Cela peut être utile lorsque vous devez valider une entrée utilisateur ou effectuer des actions spécifiques en fonction de l’état de la case à cocher.

Document doc = new Document("WorkingWithSDT.docx");
StructuredDocumentTag sdtCheckBox = (StructuredDocumentTag) doc.getChild(NodeType.STRUCTURED_DOCUMENT_TAG, 0, true);

if (sdtCheckBox.getSdtType() == SdtType.CHECKBOX) {
    // La case est cochée
    sdtCheckBox.setChecked(true);
}

doc.save("UpdatedDocument.docx");

Modification des contrôles de contenu

Dans cette section, nous explorerons comment modifier les contrôles de contenu dans votre document. Nous aborderons trois types de contrôles de contenu : texte brut, liste déroulante et image.

Modification du contrôle de contenu en texte brut

Document doc = new Document("WorkingWithSDT.docx");
StructuredDocumentTag sdtPlainText = (StructuredDocumentTag) doc.getChild(NodeType.STRUCTURED_DOCUMENT_TAG, 0, true);

if (sdtPlainText.getSdtType() == SdtType.PLAIN_TEXT) {
    // Effacer le contenu existant
    sdtPlainText.removeAllChildren();

    // Ajouter un nouveau texte
    Paragraph para = (Paragraph) sdtPlainText.appendChild(new Paragraph(doc));
    Run run = new Run(doc, "New text goes here");
    para.appendChild(run);
}

doc.save("ModifiedDocument.docx");

Modification du contrôle de contenu d’une liste déroulante

Document doc = new Document("WorkingWithSDT.docx");
StructuredDocumentTag sdtDropDown = (StructuredDocumentTag) doc.getChild(NodeType.STRUCTURED_DOCUMENT_TAG, 0, true);

if (sdtDropDown.getSdtType() == SdtType.DROP_DOWN_LIST) {
    // Sélectionnez le deuxième élément de la liste
    SdtListItem secondItem = sdtDropDown.getListItems().get(2);
    sdtDropDown.getListItems().setSelectedValue(secondItem);
}

doc.save("ModifiedDocument.docx");

Modification du contrôle du contenu de l’image

Document doc = new Document("WorkingWithSDT.docx");
StructuredDocumentTag sdtPicture = (StructuredDocumentTag) doc.getChild(NodeType.STRUCTURED_DOCUMENT_TAG, 0, true);
Shape shape = (Shape) sdtPicture.getChild(NodeType.SHAPE, 0, true);

if (shape.hasImage()) {
    // Remplacer l'image par une nouvelle
    shape.getImageData().setImage("Watermark.png");
}

doc.save("ModifiedDocument.docx");

Création d’un contrôle de contenu ComboBox

Un contrôle de contenu ComboBox permet aux utilisateurs de sélectionner parmi une liste prédéfinie d’options. Créons-en un dans notre document.

Document doc = new Document();
StructuredDocumentTag sdtComboBox = new StructuredDocumentTag(doc, SdtType.COMBO_BOX, MarkupLevel.BLOCK);
sdtComboBox.getListItems().add(new SdtListItem("Choose an item", "-1"));
sdtComboBox.getListItems().add(new SdtListItem("Item 1", "1"));
sdtComboBox.getListItems().add(new SdtListItem("Item 2", "2"));
doc.getFirstSection().getBody().appendChild(sdtComboBox);

doc.save("ComboBoxDocument.docx");

Travailler avec le contrôle de contenu en texte enrichi

Les contrôles de contenu en texte enrichi sont parfaits pour ajouter du texte formaté à vos documents. Créons-en un et définissons son contenu.

Document doc = new Document();
StructuredDocumentTag sdtRichText = new StructuredDocumentTag(doc, SdtType.RICH_TEXT, MarkupLevel.BLOCK);
Paragraph para = new Paragraph(doc);
Run run = new Run(doc);
run.setText("Hello World");
run.getFont().setColor(Color.GREEN);
para.getRuns().add(run);
sdtRichText.getChildNodes().add(para);
doc.getFirstSection().getBody().appendChild(sdtRichText);

doc.save("RichTextDocument.docx");

Définition des styles de contrôle de contenu

Vous pouvez appliquer des styles aux contrôles de contenu pour améliorer l’apparence visuelle de votre document. Voyons comment définir le style d’un contrôle de contenu.

Document doc = new Document("WorkingWithSDT.docx");
StructuredDocumentTag sdt = (StructuredDocumentTag) doc.getChild(NodeType.STRUCTURED_DOCUMENT_TAG, 0, true);

//Appliquer un style personnalisé
Style style = doc.getStyles().getByStyleIdentifier(StyleIdentifier.QUOTE);
sdt.setStyle(style);

doc.save("StyledDocument.docx");

Liaison d’un SDT à des données XML personnalisées

Dans certains scénarios, vous devrez peut-être lier un SDT à des données XML personnalisées pour la génération de contenu dynamique. Voyons comment y parvenir.

Document doc = new Document();
CustomXmlPart xmlPart = doc.getCustomXmlParts().add(UUID.randomUUID().toString(), "<root><text>Hello, World!</text></root>");
StructuredDocumentTag sdt = new StructuredDocumentTag(doc, SdtType.PLAIN_TEXT, MarkupLevel.BLOCK);
doc.getFirstSection().getBody().appendChild(sdt);
sdt.getXmlMapping().setMapping(xmlPart, "/root[1]/text[1]", "");

doc.save("CustomXMLBinding.docx");

Création d’un tableau avec des sections répétitives mappées à des données XML personnalisées

Les tableaux avec des sections répétitives peuvent être extrêmement utiles pour présenter des données structurées. Créons une telle table et mappons-la à des données XML personnalisées.

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
CustomXmlPart xmlPart = doc.getCustomXmlParts().add("Books", "<books>...</books>");
Table table = builder.startTable();
builder.insertCell();
builder.write("Title");
builder.insertCell();
builder.write("Author");
builder.endRow();
builder.endTable();

StructuredDocumentTag repeatingSectionSdt = new StructuredDocumentTag(doc, SdtType.REPEATING_SECTION, MarkupLevel.ROW);
repeatingSectionSdt.getXmlMapping().setMapping(xmlPart, "/books[1]/book", "");
table.appendChild(repeatingSectionSdt);

StructuredDocumentTag repeatingSectionItemSdt = new StructuredDocumentTag(doc, SdtType.REPEATING_SECTION_ITEM, MarkupLevel.ROW);
repeatingSectionSdt.appendChild(repeatingSectionItemSdt);

Row row = new Row(doc);
repeatingSectionItemSdt.appendChild(row);

StructuredDocumentTag titleSdt = new StructuredDocumentTag(doc, SdtType.PLAIN_TEXT, MarkupLevel.CELL);
titleSdt.getXmlMapping().setMapping(xmlPart, "/books[1]/book[1]/title[1]", "");
row.appendChild(titleSdt);

StructuredDocumentTag authorSdt = new StructuredDocumentTag(doc, SdtType.PLAIN_TEXT, MarkupLevel.CELL);
authorSdt.getXmlMapping().setMapping(xmlPart, "/books[1]/book[1]/author[1]", "");
row.appendChild(authorSdt);

doc.save("RepeatingTableDocument.docx");

Travailler avec des balises de documents structurés à plusieurs sections

Les balises de document structuré peuvent s’étendre sur plusieurs sections d’un document. Dans cette section, nous explorerons comment travailler avec des SDT multi-sections.

Document doc = new Document("MultiSectionDocument.docx");
NodeCollection tags = doc.getChildNodes(NodeType.STRUCTURED_DOCUMENT_TAG_RANGE_START, true);

for (StructuredDocumentTagRangeStart tag : tags) {
    System.out.println(tag.getTitle());
}

doc.save("ModifiedMultiSectionDocument.docx");

Conclusion

Les balises de documents structurés dans Aspose.Words pour Java offrent un moyen polyvalent de gérer et de formater le contenu de vos documents. Que vous ayez besoin de créer des modèles, des formulaires ou des documents dynamiques, les SDT offrent la flexibilité et le contrôle dont vous avez besoin. En suivant les exemples et les directives fournis dans cet article, vous pouvez exploiter la puissance des SDT pour améliorer vos tâches de traitement de documents.

FAQ

Quel est le but des balises de documents structurés (SDT) ?

Les balises de documents structurés (SDT) servent à organiser et à formater le contenu des documents, facilitant ainsi la création de modèles, de formulaires et de documents structurés.

Comment puis-je vérifier l’état actuel d’un Checkbox SDT ?

Vous pouvez vérifier l’état actuel d’un Checkbox SDT à l’aide de l’outilsetChecked méthode, comme démontré dans l’article.

Puis-je appliquer des styles aux contrôles de contenu ?

Oui, vous pouvez appliquer des styles aux contrôles de contenu pour personnaliser leur apparence dans le document.

Est-il possible de lier un SDT à des données XML personnalisées ?

Oui, vous pouvez lier un SDT à des données XML personnalisées, permettant ainsi la génération de contenu dynamique et le mappage de données.

Que sont les sections répétitives dans les SDT ?

Les sections répétitives dans les SDT vous permettent de créer des tableaux avec des données dynamiques, dans lesquels les lignes peuvent être répétées en fonction des données XML mappées.