การใช้ Structured Document Tags (SDT) ใน Aspose.Words สำหรับ Java
บทนำเกี่ยวกับการใช้ Structured Document Tags (SDT) ใน Aspose.Words สำหรับ Java
Structured Document Tags (SDT) เป็นฟีเจอร์อันทรงพลังใน Aspose.Words สำหรับ Java ที่ช่วยให้คุณสร้างและจัดการเนื้อหาที่มีโครงสร้างภายในเอกสารของคุณได้ ในคู่มือฉบับสมบูรณ์นี้ เราจะแนะนำคุณเกี่ยวกับแง่มุมต่างๆ ของการใช้ SDT ใน Aspose.Words สำหรับ Java ไม่ว่าคุณจะเป็นมือใหม่หรือผู้พัฒนาที่มีประสบการณ์ คุณจะพบข้อมูลเชิงลึกอันมีค่าและตัวอย่างเชิงปฏิบัติในบทความนี้
การเริ่มต้น
ก่อนที่เราจะลงรายละเอียด เรามาตั้งค่าสภาพแวดล้อมและสร้าง SDT พื้นฐานกันก่อน ในส่วนนี้ เราจะครอบคลุมหัวข้อต่อไปนี้:
- การสร้างเอกสารใหม่
- การเพิ่มแท็กเอกสารที่มีโครงสร้าง
- การบันทึกเอกสาร
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
// สร้างแท็กเอกสารที่มีโครงสร้างประเภท CHECKBOX
StructuredDocumentTag sdtCheckBox = new StructuredDocumentTag(doc, SdtType.CHECKBOX, MarkupLevel.INLINE);
builder.insertNode(sdtCheckBox);
// บันทึกเอกสาร
doc.save("WorkingWithSDT.docx");
การตรวจสอบสถานะปัจจุบันของกล่องกาเครื่องหมาย SDT
เมื่อคุณเพิ่ม SDT ของกล่องกาเครื่องหมายลงในเอกสารแล้ว คุณอาจต้องการตรวจสอบสถานะปัจจุบันของเอกสารด้วยโปรแกรม ซึ่งอาจมีประโยชน์เมื่อคุณต้องตรวจสอบอินพุตของผู้ใช้หรือดำเนินการเฉพาะตามสถานะของกล่องกาเครื่องหมาย
Document doc = new Document("WorkingWithSDT.docx");
StructuredDocumentTag sdtCheckBox = (StructuredDocumentTag) doc.getChild(NodeType.STRUCTURED_DOCUMENT_TAG, 0, true);
if (sdtCheckBox.getSdtType() == SdtType.CHECKBOX) {
// ช่องกาเครื่องหมายถูกทำเครื่องหมายแล้ว
sdtCheckBox.setChecked(true);
}
doc.save("UpdatedDocument.docx");
การปรับเปลี่ยนการควบคุมเนื้อหา
ในส่วนนี้ เราจะมาดูวิธีการปรับเปลี่ยนการควบคุมเนื้อหาภายในเอกสารของคุณ เราจะครอบคลุมการควบคุมเนื้อหาสามประเภท ได้แก่ ข้อความธรรมดา รายการดรอปดาวน์ และรูปภาพ
การปรับเปลี่ยนการควบคุมเนื้อหาข้อความธรรมดา
Document doc = new Document("WorkingWithSDT.docx");
StructuredDocumentTag sdtPlainText = (StructuredDocumentTag) doc.getChild(NodeType.STRUCTURED_DOCUMENT_TAG, 0, true);
if (sdtPlainText.getSdtType() == SdtType.PLAIN_TEXT) {
// ล้างเนื้อหาที่มีอยู่
sdtPlainText.removeAllChildren();
// เพิ่มข้อความใหม่
Paragraph para = (Paragraph) sdtPlainText.appendChild(new Paragraph(doc));
Run run = new Run(doc, "New text goes here");
para.appendChild(run);
}
doc.save("ModifiedDocument.docx");
การแก้ไขการควบคุมเนื้อหารายการแบบดรอปดาวน์
Document doc = new Document("WorkingWithSDT.docx");
StructuredDocumentTag sdtDropDown = (StructuredDocumentTag) doc.getChild(NodeType.STRUCTURED_DOCUMENT_TAG, 0, true);
if (sdtDropDown.getSdtType() == SdtType.DROP_DOWN_LIST) {
// เลือกรายการที่สองจากรายการ
SdtListItem secondItem = sdtDropDown.getListItems().get(2);
sdtDropDown.getListItems().setSelectedValue(secondItem);
}
doc.save("ModifiedDocument.docx");
การแก้ไขการควบคุมเนื้อหารูปภาพ
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()) {
// เปลี่ยนรูปภาพใหม่
shape.getImageData().setImage("Watermark.png");
}
doc.save("ModifiedDocument.docx");
การสร้างตัวควบคุมเนื้อหา ComboBox
ComboBox Content Control ช่วยให้ผู้ใช้เลือกจากรายการตัวเลือกที่กำหนดไว้ล่วงหน้า มาสร้างรายการตัวเลือกในเอกสารของเรากัน
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");
การทำงานกับการควบคุมเนื้อหาข้อความที่มีรูปแบบหลากหลาย
การควบคุมเนื้อหาข้อความแบบ Rich Text เหมาะอย่างยิ่งสำหรับการเพิ่มข้อความที่มีรูปแบบลงในเอกสารของคุณ มาสร้างและกำหนดเนื้อหากันเลย
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");
การตั้งค่ารูปแบบการควบคุมเนื้อหา
คุณสามารถใช้รูปแบบกับตัวควบคุมเนื้อหาเพื่อปรับปรุงรูปลักษณ์ของเอกสารของคุณ มาดูวิธีการตั้งค่ารูปแบบของตัวควบคุมเนื้อหากัน
Document doc = new Document("WorkingWithSDT.docx");
StructuredDocumentTag sdt = (StructuredDocumentTag) doc.getChild(NodeType.STRUCTURED_DOCUMENT_TAG, 0, true);
// ใช้รูปแบบที่กำหนดเอง
Style style = doc.getStyles().getByStyleIdentifier(StyleIdentifier.QUOTE);
sdt.setStyle(style);
doc.save("StyledDocument.docx");
การผูก SDT กับข้อมูล XML ที่กำหนดเอง
ในบางสถานการณ์ คุณอาจต้องผูก SDT กับข้อมูล XML ที่กำหนดเองเพื่อสร้างเนื้อหาแบบไดนามิก มาลองดูวิธีการดำเนินการนี้กัน
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");
การสร้างตารางที่มีส่วนที่ซ้ำกันซึ่งแมปกับข้อมูล XML ที่กำหนดเอง
ตารางที่มีส่วนที่ซ้ำกันอาจมีประโยชน์อย่างยิ่งในการนำเสนอข้อมูลที่มีโครงสร้าง มาสร้างตารางดังกล่าวและจับคู่กับข้อมูล XML ที่กำหนดเองกัน
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");
การทำงานกับแท็กเอกสารที่มีโครงสร้างหลายส่วน
แท็กเอกสารที่มีโครงสร้างสามารถครอบคลุมหลายส่วนในเอกสารเดียวได้ ในส่วนนี้ เราจะมาสำรวจวิธีการทำงานกับ 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");
บทสรุป
แท็กเอกสารที่มีโครงสร้างใน Aspose.Words สำหรับ Java มอบวิธีที่หลากหลายในการจัดการและจัดรูปแบบเนื้อหาภายในเอกสารของคุณ ไม่ว่าคุณจะต้องสร้างเทมเพลต แบบฟอร์ม หรือเอกสารแบบไดนามิก SDT ก็มอบความยืดหยุ่นและการควบคุมที่คุณต้องการได้ ด้วยการทำตามตัวอย่างและแนวทางที่ให้ไว้ในบทความนี้ คุณสามารถใช้ประโยชน์จากความสามารถของ SDT เพื่อปรับปรุงงานประมวลผลเอกสารของคุณได้
คำถามที่พบบ่อย
วัตถุประสงค์ของแท็กเอกสารที่มีโครงสร้าง (SDT) คืออะไร
แท็กเอกสารที่มีโครงสร้าง (SDT) มีวัตถุประสงค์เพื่อจัดระเบียบและจัดรูปแบบเนื้อหาภายในเอกสาร ทำให้การสร้างเทมเพลต แบบฟอร์ม และเอกสารที่มีโครงสร้างเป็นเรื่องง่ายยิ่งขึ้น
ฉันจะตรวจสอบสถานะปัจจุบันของ Checkbox SDT ได้อย่างไร
คุณสามารถตรวจสอบสถานะปัจจุบันของ Checkbox SDT ได้โดยใช้setChecked
วิธีการดังที่แสดงไว้ในบทความ
ฉันสามารถนำสไตล์ไปใช้กับการควบคุมเนื้อหาได้หรือไม่
ใช่ คุณสามารถใช้รูปแบบกับตัวควบคุมเนื้อหาเพื่อปรับแต่งลักษณะที่ปรากฏในเอกสารได้
สามารถผูก SDT กับข้อมูล XML แบบกำหนดเองได้หรือไม่
ใช่ คุณสามารถผูก SDT กับข้อมูล XML ที่กำหนดเองได้ ช่วยให้สร้างเนื้อหาแบบไดนามิกและทำการแมปข้อมูลได้
การทำซ้ำส่วนต่างๆ ใน SDT คืออะไร
การทำซ้ำส่วนต่างๆ ใน SDT ช่วยให้คุณสามารถสร้างตารางที่มีข้อมูลแบบไดนามิก ซึ่งสามารถทำซ้ำแถวต่างๆ ได้โดยอิงตามข้อมูล XML ที่แมปไว้