การใช้แท็กเอกสารที่มีโครงสร้าง (SDT) ใน Aspose.Words สำหรับ Java

ข้อมูลเบื้องต้นเกี่ยวกับการใช้แท็กเอกสารที่มีโครงสร้าง (SDT) ใน Aspose.Words สำหรับ Java

แท็กเอกสารที่มีโครงสร้าง (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

การควบคุมเนื้อหา 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 ได้อย่างไร

คุณสามารถตรวจสอบสถานะปัจจุบันของช่องทำเครื่องหมาย SDT ได้โดยใช้setChecked วิธีการดังแสดงในบทความ

ฉันสามารถใช้สไตล์กับการควบคุมเนื้อหาได้หรือไม่

ได้ คุณสามารถใช้สไตล์กับการควบคุมเนื้อหาเพื่อปรับแต่งรูปลักษณ์ในเอกสารได้

เป็นไปได้หรือไม่ที่จะผูก SDT กับข้อมูล XML ที่กำหนดเอง

ใช่ คุณสามารถผูก SDT กับข้อมูล XML แบบกำหนดเองได้ ซึ่งช่วยให้สามารถสร้างเนื้อหาแบบไดนามิกและการแมปข้อมูลได้

การทำซ้ำส่วนที่อยู่ใน SDT คืออะไร

การทำซ้ำส่วนใน SDT ช่วยให้คุณสร้างตารางที่มีข้อมูลไดนามิก โดยสามารถทำซ้ำแถวตามข้อมูล XML ที่แมปได้