Verwenden strukturierter Dokument-Tags (SDT) in Aspose.Words für Java

Einführung in die Verwendung strukturierter Dokument-Tags (SDT) in Aspose.Words für Java

Strukturierte Dokument-Tags (SDT) sind eine leistungsstarke Funktion in Aspose.Words für Java, mit der Sie strukturierte Inhalte in Ihren Dokumenten erstellen und bearbeiten können. In diesem umfassenden Leitfaden führen wir Sie durch die verschiedenen Aspekte der Verwendung von SDTs in Aspose.Words für Java. Egal, ob Sie Einsteiger oder erfahrener Entwickler sind, in diesem Artikel finden Sie wertvolle Erkenntnisse und Praxisbeispiele.

Erste Schritte

Bevor wir uns mit den Details befassen, richten wir unsere Umgebung ein und erstellen ein grundlegendes SDT. In diesem Abschnitt behandeln wir die folgenden Themen:

  • Erstellen eines neuen Dokuments
  • Hinzufügen eines strukturierten Dokument-Tags
  • Speichern des Dokuments
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Erstellen Sie ein strukturiertes Dokument-Tag vom Typ CHECKBOX
StructuredDocumentTag sdtCheckBox = new StructuredDocumentTag(doc, SdtType.CHECKBOX, MarkupLevel.INLINE);
builder.insertNode(sdtCheckBox);

// Speichern Sie das Dokument
doc.save("WorkingWithSDT.docx");

Überprüfen des aktuellen Status eines Checkbox-SDT

Nachdem Sie Ihrem Dokument ein Kontrollkästchen-SDT hinzugefügt haben, möchten Sie möglicherweise dessen aktuellen Status programmgesteuert überprüfen. Dies kann nützlich sein, wenn Sie Benutzereingaben validieren oder bestimmte Aktionen basierend auf dem Kontrollkästchenstatus ausführen müssen.

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

if (sdtCheckBox.getSdtType() == SdtType.CHECKBOX) {
    // Das Kontrollkästchen ist aktiviert
    sdtCheckBox.setChecked(true);
}

doc.save("UpdatedDocument.docx");

Inhaltssteuerelemente ändern

In diesem Abschnitt erfahren Sie, wie Sie Inhaltssteuerelemente in Ihrem Dokument ändern. Wir behandeln drei Arten von Inhaltssteuerelementen: Nur-Text, Dropdown-Liste und Bild.

Ändern der Inhaltssteuerung für Nur-Text

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

if (sdtPlainText.getSdtType() == SdtType.PLAIN_TEXT) {
    // Löschen Sie den vorhandenen Inhalt
    sdtPlainText.removeAllChildren();

    // Neuen Text hinzufügen
    Paragraph para = (Paragraph) sdtPlainText.appendChild(new Paragraph(doc));
    Run run = new Run(doc, "New text goes here");
    para.appendChild(run);
}

doc.save("ModifiedDocument.docx");

Ändern der Inhaltssteuerung der Dropdown-Liste

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

if (sdtDropDown.getSdtType() == SdtType.DROP_DOWN_LIST) {
    // Wählen Sie das zweite Element aus der Liste aus
    SdtListItem secondItem = sdtDropDown.getListItems().get(2);
    sdtDropDown.getListItems().setSelectedValue(secondItem);
}

doc.save("ModifiedDocument.docx");

Ändern der Bildinhaltssteuerung

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()) {
    // Ersetzen Sie das Bild durch ein neues
    shape.getImageData().setImage("Watermark.png");
}

doc.save("ModifiedDocument.docx");

Erstellen eines ComboBox-Inhaltssteuerelements

Mit einem ComboBox-Inhaltssteuerelement können Benutzer aus einer vordefinierten Liste von Optionen auswählen. Lassen Sie uns eines in unserem Dokument erstellen.

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");

Arbeiten mit Rich Text Content Control

Rich-Text-Inhaltssteuerelemente eignen sich perfekt zum Hinzufügen von formatiertem Text zu Ihren Dokumenten. Lassen Sie uns eines erstellen und seinen Inhalt festlegen.

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");

Festlegen von Inhaltssteuerstilen

Sie können Stile auf Inhaltssteuerelemente anwenden, um das visuelle Erscheinungsbild Ihres Dokuments zu verbessern. Sehen wir uns an, wie Sie den Stil eines Inhaltssteuerelements festlegen.

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

//Wenden Sie einen benutzerdefinierten Stil an
Style style = doc.getStyles().getByStyleIdentifier(StyleIdentifier.QUOTE);
sdt.setStyle(style);

doc.save("StyledDocument.docx");

Binden eines SDT an benutzerdefinierte XML-Daten

In einigen Szenarien müssen Sie möglicherweise ein SDT an benutzerdefinierte XML-Daten binden, um dynamische Inhalte zu generieren. Lassen Sie uns untersuchen, wie wir dies erreichen können.

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");

Erstellen einer Tabelle mit sich wiederholenden Abschnitten, die benutzerdefinierten XML-Daten zugeordnet sind

Tabellen mit sich wiederholenden Abschnitten können für die Darstellung strukturierter Daten äußerst nützlich sein. Lassen Sie uns eine solche Tabelle erstellen und sie benutzerdefinierten XML-Daten zuordnen.

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");

Arbeiten mit Tags für strukturierte Dokumente mit mehreren Abschnitten

Strukturierte Dokument-Tags können sich über mehrere Abschnitte in einem Dokument erstrecken. In diesem Abschnitt erfahren Sie, wie Sie mit SDTs mit mehreren Abschnitten arbeiten.

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");

Abschluss

Strukturierte Dokument-Tags in Aspose.Words für Java bieten eine vielseitige Möglichkeit, Inhalte in Ihren Dokumenten zu verwalten und zu formatieren. Unabhängig davon, ob Sie Vorlagen, Formulare oder dynamische Dokumente erstellen müssen, SDTs bieten die Flexibilität und Kontrolle, die Sie benötigen. Indem Sie die in diesem Artikel bereitgestellten Beispiele und Richtlinien befolgen, können Sie die Leistungsfähigkeit von SDTs nutzen, um Ihre Dokumentenverarbeitungsaufgaben zu verbessern.

FAQs

Was ist der Zweck von Structured Document Tags (SDTs)?

Strukturierte Dokument-Tags (SDTs) dienen der Organisation und Formatierung von Inhalten in Dokumenten und erleichtern so die Erstellung von Vorlagen, Formularen und strukturierten Dokumenten.

Wie kann ich den aktuellen Status eines Checkbox-SDT überprüfen?

Sie können den aktuellen Status eines Checkbox-SDT mithilfe von überprüfensetChecked Methode, wie im Artikel gezeigt.

Kann ich Stile auf Inhaltssteuerelemente anwenden?

Ja, Sie können Stile auf Inhaltssteuerelemente anwenden, um deren Erscheinungsbild im Dokument anzupassen.

Ist es möglich, ein SDT an benutzerdefinierte XML-Daten zu binden?

Ja, Sie können ein SDT an benutzerdefinierte XML-Daten binden und so eine dynamische Inhaltsgenerierung und Datenzuordnung ermöglichen.

Was sind sich wiederholende Abschnitte in SDTs?

Durch wiederholte Abschnitte in SDTs können Sie Tabellen mit dynamischen Daten erstellen, in denen Zeilen basierend auf den zugeordneten XML-Daten wiederholt werden können.