Använda SDT (Structured Document Tags) i Aspose.Words för Java
Introduktion till att använda strukturerade dokumenttaggar (SDT) i Aspose.Words för Java
Structured Document Tags (SDT) är en kraftfull funktion i Aspose.Words för Java som låter dig skapa och manipulera strukturerat innehåll i dina dokument. I den här omfattande guiden går vi igenom de olika aspekterna av att använda SDT i Aspose.Words för Java. Oavsett om du är nybörjare eller erfaren utvecklare hittar du värdefulla insikter och praktiska exempel i den här artikeln.
Komma igång
Innan vi dyker in i detaljerna, låt oss ställa in vår miljö och skapa en grundläggande SDT. I det här avsnittet kommer vi att täcka följande ämnen:
- Skapa ett nytt dokument
- Lägga till en strukturerad dokumenttagg
- Sparar dokumentet
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
// Skapa en strukturerad dokumenttagg av typen CHECKBOX
StructuredDocumentTag sdtCheckBox = new StructuredDocumentTag(doc, SdtType.CHECKBOX, MarkupLevel.INLINE);
builder.insertNode(sdtCheckBox);
// Spara dokumentet
doc.save("WorkingWithSDT.docx");
Kontrollera det aktuella tillståndet för en kryssruta SDT
När du har lagt till en kryssruta SDT i ditt dokument kanske du vill kontrollera dess aktuella tillstånd programmatiskt. Detta kan vara användbart när du behöver validera användarinmatning eller utföra specifika åtgärder baserat på kryssrutans tillstånd.
Document doc = new Document("WorkingWithSDT.docx");
StructuredDocumentTag sdtCheckBox = (StructuredDocumentTag) doc.getChild(NodeType.STRUCTURED_DOCUMENT_TAG, 0, true);
if (sdtCheckBox.getSdtType() == SdtType.CHECKBOX) {
// Kryssrutan är markerad
sdtCheckBox.setChecked(true);
}
doc.save("UpdatedDocument.docx");
Ändra innehållskontroller
I det här avsnittet kommer vi att utforska hur du ändrar innehållskontroller i ditt dokument. Vi kommer att täcka tre typer av innehållskontroller: vanlig text, listruta och bild.
Ändra innehållskontroll för vanlig text
Document doc = new Document("WorkingWithSDT.docx");
StructuredDocumentTag sdtPlainText = (StructuredDocumentTag) doc.getChild(NodeType.STRUCTURED_DOCUMENT_TAG, 0, true);
if (sdtPlainText.getSdtType() == SdtType.PLAIN_TEXT) {
// Rensa det befintliga innehållet
sdtPlainText.removeAllChildren();
// Lägg till ny 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");
Ändra innehållskontroll i rullgardinsmenyn
Document doc = new Document("WorkingWithSDT.docx");
StructuredDocumentTag sdtDropDown = (StructuredDocumentTag) doc.getChild(NodeType.STRUCTURED_DOCUMENT_TAG, 0, true);
if (sdtDropDown.getSdtType() == SdtType.DROP_DOWN_LIST) {
// Välj det andra objektet från listan
SdtListItem secondItem = sdtDropDown.getListItems().get(2);
sdtDropDown.getListItems().setSelectedValue(secondItem);
}
doc.save("ModifiedDocument.docx");
Ändra bildinnehållskontroll
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()) {
// Byt ut bilden mot en ny
shape.getImageData().setImage("Watermark.png");
}
doc.save("ModifiedDocument.docx");
Skapa en ComboBox-innehållskontroll
En ComboBox Content Control låter användare välja från en fördefinierad lista med alternativ. Låt oss skapa en i vårt dokument.
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");
Arbeta med Rich Text Content Control
Rich Text Content Controls är perfekta för att lägga till formaterad text till dina dokument. Låt oss skapa en och ställa in dess innehåll.
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");
Ställa in innehållskontrollstilar
Du kan använda stilar på innehållskontroller för att förbättra dokumentets visuella utseende. Låt oss se hur du ställer in stilen för en innehållskontroll.
Document doc = new Document("WorkingWithSDT.docx");
StructuredDocumentTag sdt = (StructuredDocumentTag) doc.getChild(NodeType.STRUCTURED_DOCUMENT_TAG, 0, true);
// Använd en anpassad stil
Style style = doc.getStyles().getByStyleIdentifier(StyleIdentifier.QUOTE);
sdt.setStyle(style);
doc.save("StyledDocument.docx");
Bindning av en SDT till anpassade XML-data
I vissa scenarier kan du behöva binda en SDT till anpassade XML-data för dynamisk innehållsgenerering. Låt oss undersöka hur man uppnår detta.
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");
Skapa en tabell med upprepade sektioner mappade till anpassade XML-data
Tabeller med upprepade avsnitt kan vara extremt användbara för att presentera strukturerad data. Låt oss skapa en sådan tabell och mappa den till anpassade 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");
Arbeta med strukturerade dokumenttaggar med flera sektioner
Strukturerade dokumenttaggar kan sträcka sig över flera avsnitt i ett dokument. I det här avsnittet kommer vi att utforska hur man arbetar med multi-sektions 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");
Slutsats
Strukturerade dokumenttaggar i Aspose.Words för Java ger ett mångsidigt sätt att hantera och formatera innehåll i dina dokument. Oavsett om du behöver skapa mallar, formulär eller dynamiska dokument erbjuder SDT:er den flexibilitet och kontroll du behöver. Genom att följa exemplen och riktlinjerna i den här artikeln kan du utnyttja kraften hos SDT för att förbättra dina dokumentbearbetningsuppgifter.
FAQ’s
Vad är syftet med Structured Document Tags (SDT)?
Strukturerade dokumenttaggar (SDT) tjänar syftet att organisera och formatera innehåll i dokument, vilket gör det lättare att skapa mallar, formulär och strukturerade dokument.
Hur kan jag kontrollera det aktuella tillståndet för en Checkbox SDT?
Du kan kontrollera aktuell status för en Checkbox SDT med hjälp avsetChecked
metod, som visas i artikeln.
Kan jag tillämpa stilar på innehållskontroller?
Ja, du kan använda stilar på innehållskontroller för att anpassa deras utseende i dokumentet.
Är det möjligt att binda en SDT till anpassade XML-data?
Ja, du kan binda en SDT till anpassade XML-data, vilket möjliggör dynamisk innehållsgenerering och datamappning.
Vad är repeterande avsnitt i SDT?
Upprepande sektioner i SDT:er låter dig skapa tabeller med dynamisk data, där rader kan upprepas baserat på mappade XML-data.