Použití značek strukturovaného dokumentu (SDT) v Aspose.Words pro Javu

Úvod do používání značek strukturovaného dokumentu (SDT) v Aspose.Words pro Javu

Structured Document Tags (SDT) jsou výkonnou funkcí v Aspose.Words for Java, která vám umožní vytvářet a manipulovat se strukturovaným obsahem ve vašich dokumentech. V tomto komplexním průvodci vás provedeme různými aspekty používání SDT v Aspose.Words for Java. Ať už jste začátečník nebo zkušený vývojář, v tomto článku najdete cenné postřehy a praktické příklady.

Začínáme

Než se ponoříme do detailů, nastavíme naše prostředí a vytvoříme základní SDT. V této části se budeme zabývat následujícími tématy:

  • Vytvoření nového dokumentu
  • Přidání štítku strukturovaného dokumentu
  • Ukládání dokumentu
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Vytvořte značku strukturovaného dokumentu typu CHECKBOX
StructuredDocumentTag sdtCheckBox = new StructuredDocumentTag(doc, SdtType.CHECKBOX, MarkupLevel.INLINE);
builder.insertNode(sdtCheckBox);

// Uložte dokument
doc.save("WorkingWithSDT.docx");

Kontrola aktuálního stavu zaškrtávacího políčka SDT

Jakmile do dokumentu přidáte zaškrtávací políčko SDT, možná budete chtít programově zkontrolovat jeho aktuální stav. To může být užitečné, když potřebujete ověřit uživatelský vstup nebo provést konkrétní akce na základě stavu zaškrtávacího políčka.

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

if (sdtCheckBox.getSdtType() == SdtType.CHECKBOX) {
    // Zaškrtávací políčko je zaškrtnuté
    sdtCheckBox.setChecked(true);
}

doc.save("UpdatedDocument.docx");

Úprava ovládacích prvků obsahu

V této části prozkoumáme, jak upravit ovládací prvky obsahu v dokumentu. Probereme tři typy ovládacích prvků obsahu: Prostý text, Rozbalovací seznam a Obrázek.

Úprava ovládacího prvku obsahu prostého textu

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

if (sdtPlainText.getSdtType() == SdtType.PLAIN_TEXT) {
    // Vymažte stávající obsah
    sdtPlainText.removeAllChildren();

    // Přidat nový text
    Paragraph para = (Paragraph) sdtPlainText.appendChild(new Paragraph(doc));
    Run run = new Run(doc, "New text goes here");
    para.appendChild(run);
}

doc.save("ModifiedDocument.docx");

Úprava ovládacího prvku obsahu rozevíracího seznamu

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

if (sdtDropDown.getSdtType() == SdtType.DROP_DOWN_LIST) {
    // Vyberte druhou položku ze seznamu
    SdtListItem secondItem = sdtDropDown.getListItems().get(2);
    sdtDropDown.getListItems().setSelectedValue(secondItem);
}

doc.save("ModifiedDocument.docx");

Úprava ovládání obsahu obrázku

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()) {
    // Nahraďte obrázek novým
    shape.getImageData().setImage("Watermark.png");
}

doc.save("ModifiedDocument.docx");

Vytvoření ovládacího prvku obsahu ComboBox

ComboBox Content Control umožňuje uživatelům vybírat z předdefinovaného seznamu možností. Vytvořme jeden v našem dokumentu.

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

Práce s řízením obsahu RTF

Ovládací prvky obsahu RTF jsou ideální pro přidávání formátovaného textu do vašich dokumentů. Pojďme si jeden vytvořit a nastavit jeho obsah.

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

Nastavení stylů ovládání obsahu

Na ovládací prvky obsahu můžete použít styly a vylepšit tak vizuální vzhled dokumentu. Podívejme se, jak nastavit styl ovládacího prvku obsahu.

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

//Použijte vlastní styl
Style style = doc.getStyles().getByStyleIdentifier(StyleIdentifier.QUOTE);
sdt.setStyle(style);

doc.save("StyledDocument.docx");

Vazba SDT na vlastní data XML

V některých scénářích může být nutné svázat SDT s vlastními daty XML pro generování dynamického obsahu. Pojďme prozkoumat, jak toho dosáhnout.

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

Vytvoření tabulky s opakujícími se sekcemi namapovanými na uživatelská data XML

Tabulky s opakujícími se sekcemi mohou být velmi užitečné pro prezentaci strukturovaných dat. Vytvořme si takovou tabulku a namapujme ji na vlastní XML data.

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

Práce s víceoddílovými strukturovanými štítky dokumentu

Značky strukturovaného dokumentu mohou zahrnovat více oddílů v dokumentu. V této části prozkoumáme, jak pracovat s vícedílnými SDT.

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

Závěr

Structured Document Tags v Aspose.Words pro Java poskytují všestranný způsob správy a formátování obsahu ve vašich dokumentech. Ať už potřebujete vytvářet šablony, formuláře nebo dynamické dokumenty, SDT nabízejí flexibilitu a kontrolu, kterou požadujete. Podle příkladů a pokynů uvedených v tomto článku můžete využít výkon SDT k vylepšení úloh zpracování dokumentů.

FAQ

Jaký je účel značek strukturovaných dokumentů (SDT)?

Značky strukturovaného dokumentu (SDT) slouží k uspořádání a formátování obsahu v dokumentech, což usnadňuje vytváření šablon, formulářů a strukturovaných dokumentů.

Jak mohu zkontrolovat aktuální stav Checkbox SDT?

Aktuální stav Checkbox SDT můžete zkontrolovat pomocísetChecked způsobem, jak je ukázáno v článku.

Mohu použít styly na Ovládací prvky obsahu?

Ano, můžete použít styly na Ovládací prvky obsahu a přizpůsobit jejich vzhled v dokumentu.

Je možné svázat SDT s vlastními daty XML?

Ano, SDT můžete svázat s vlastními daty XML, což umožňuje dynamické generování obsahu a mapování dat.

Co jsou opakující se sekce v SDT?

Opakující se sekce v SDT umožňují vytvářet tabulky s dynamickými daty, kde se mohou řádky opakovat na základě mapovaných dat XML.