บล็อกการสร้าง
บล็อกการสร้าง
คู่มือนี้แสดงวิธีการอ่านและแก้ไขบล็อกการสร้างเนื้อหาที่ใช้ซ้ำได้ซึ่งจัดเก็บอยู่ในเอกสารอภิธานศัพท์ของเอกสารด้วย Aspose.Words FOSS สำหรับ .NET. ไลบรารีนี้เปิดเผยรายการ AutoText, หน้าปก, ส่วนหัว, ส่วนท้าย, และเนื้อหาที่กำหนดล่วงหน้าอื่น ๆ ผ่าน Document.GlossaryDocument และโมเดลวัตถุ BuildingBlock/BuildingBlockCollection.
เอกสารอภิธานศัพท์
ทุก Document มี GlossaryDocument — เข้าถึงได้ผ่าน Document.GlossaryDocument — ซึ่งเป็นคลาสย่อยของ DocumentBase ที่เก็บบล็อกการสร้างไว้. คุณสมบัติ BuildingBlocks ของมันคืนค่า BuildingBlockCollection, โดย FirstBuildingBlock/LastBuildingBlock ให้การเข้าถึงอย่างรวดเร็วถึงส่วนสุดของรายการ. ค้นหาบล็อกการสร้างเฉพาะด้วย GetBuildingBlock(gallery, category, name), โดยจับคู่ BuildingBlockGallery, สตริงประเภท, และชื่อพร้อมกัน.
โครงสร้างบล็อกการสร้าง
BuildingBlock เป็น CompositeNode จึงมีต้นไม้เนื้อหาเป็นของตนเอง — Sections (เป็น SectionCollection), FirstSection, และ LastSection — เช่นเดียวกับที่ Document เก็บส่วนต่าง ๆ. คุณสมบัติโมเดลข้อมูลของมันระบุตัวและจัดประเภท: Name, Guid, Description, Category, Gallery (เป็น BuildingBlockGallery — AutoText, CoverPage, Headers, Footers, Tables, Watermarks, และหลายสิบแกลเลอรีที่กำหนดไว้ล่วงหน้า), Type (เป็น BuildingBlockType), และ Behavior (เป็น BuildingBlockBehavior ของ Content, Paragraph, หรือ Page) ที่ควบคุมวิธีที่เนื้อหาของมันถูกรวมเข้ากับเอกสารเมื่อแทรก.
การจัดการคอลเลกชันบล็อกการสร้าง
BuildingBlockCollection รองรับการแก้ไขคอลเลกชันแบบเต็ม: Add(node), Insert(index, node), Remove(node), RemoveAt(index), Clear(), Contains(node) และ IndexOf(node), พร้อมด้วย ToArray() และ GetEnumerator() สำหรับการอ่าน. เนื่องจากเป็น NodeCollection, บล็อกการสร้างสามารถสร้าง, คัดลอก, และย้ายได้โดยใช้ API โหนดเดียวกันกับส่วนอื่นใดของต้นไม้เอกสาร.
บล็อกการสร้างข้อความตัวแทน
แท็กเอกสารที่มีโครงสร้างสามารถอ้างอิงบล็อกการสร้างเป็นเนื้อหาตัวแทนของพวกมันได้: StructuredDocumentTag.Placeholder และ StructuredDocumentTagRangeStart.Placeholder ทั้งสองจะคืนค่า BuildingBlock ที่แสดงเมื่อแท็กว่างเปล่า ผ่านคุณสมบัติ IStructuredDocumentTag.Placeholder ที่ใช้ร่วมกัน.
เคล็ดลับและแนวทางปฏิบัติที่ดีที่สุด
- ตรวจสอบอาร์กิวเมนต์สามตัวของ
GetBuildingBlock(gallery, category, name)อย่างรอบคอบ — ชื่อเดียวกันอาจมีอยู่ในแกลเลอรีหรือหมวดหมู่ต่าง ๆ. - ใช้
BuildingBlockGalleryเพื่อกรองประเภทของเนื้อหาแบบนำกลับมาใช้ใหม่ที่คุณต้องการ (AutoText,CoverPage,Tables,Watermarksเป็นต้น) แทนการสแกนทุกบล็อกการสร้างตามชื่อเท่านั้น. BuildingBlockBehaviorกำหนดวิธีที่เนื้อหาที่แทรกจะผสานกับเอกสารโดยรอบ (Content,ParagraphหรือPage) — ตรวจสอบก่อนสมมติว่าบล็อกการสร้างจะถูกแทรกตามที่คุณคาดหวัง.- เนื่องจาก
BuildingBlockเป็นCompositeNode, ให้ถือว่ามันเหมือนกับโหนดย่อยอื่น ๆ เมื่อสร้างหรือแก้ไขเนื้อหาของมัน —AppendChild,InsertAfterและเมธอดโหนดที่คล้ายกันทั้งหมดใช้ได้.
ปัญหาทั่วไป
| ปัญหา | สาเหตุ | วิธีแก้ไข |
|---|---|---|
GetBuildingBlock() ไม่คืนค่าอะไร | แกลเลอรี, หมวดหมู่ หรือชื่อ ไม่ตรงกับบล็อกที่มีอยู่ | ทำการ Enumerate GlossaryDocument.BuildingBlocks เพื่อค้นหาการผสม Gallery/Category/Name ที่ตรงกันอย่างแม่นยำ |
| เนื้อหาบล็อกที่แทรกผสานอย่างไม่คาดคิด | Behavior (Content/Paragraph/Page) ไม่ได้รับการพิจารณา | ตรวจสอบ BuildingBlock.Behavior ก่อนทำการแทรกเพื่อเข้าใจว่ามันจะรวมอย่างไร |
| ตัวยึดตำแหน่งของแท็กเอกสารที่มีโครงสร้างไม่แสดงเนื้อหาที่คาดหวัง | Placeholder ชี้ไปที่ BuildingBlock ที่ต่างจากที่คาดไว้ | อ่าน StructuredDocumentTag.Placeholder เพื่อยืนยันว่าอ้างอิงบล็อกสร้างใดจริง ๆ |
FAQ
บล็อกการสร้าง (building blocks) ถูกจัดเก็บไว้ที่ไหนในเอกสาร?
ใน GlossaryDocument ของเอกสาร, เข้าถึงได้ผ่าน Document.GlossaryDocument, ซึ่งคุณสมบัติ BuildingBlocks เป็น BuildingBlockCollection.
ฉันจะค้นหาบล็อกการสร้างเฉพาะ, เช่นรายการ AutoText ได้อย่างไร?
เรียก GlossaryDocument.GetBuildingBlock(gallery, category, name) พร้อมกับ BuildingBlockGallery ที่ตรงกัน, หมวดหมู่, และชื่อ.
ฉันสามารถเพิ่มบล็อกการสร้างใหม่โดยโปรแกรมได้หรือไม่?
ใช่ — BuildingBlockCollection รองรับ Add(node) และ Insert(index, node) เนื่องจากมันเป็น NodeCollection.
สิ่งที่ BuildingBlockBehavior ควบคุมคืออะไร?
วิธีที่เนื้อหา building block ถูกรวมเข้ากับเอกสารเมื่อแทรก — เป็น Content, ทั้ง Paragraph, หรือทั้ง Page.
building block เกี่ยวข้องกับข้อความ placeholder ของแท็กเอกสารที่มีโครงสร้างอย่างไร?
StructuredDocumentTag.Placeholder (และ StructuredDocumentTagRangeStart.Placeholder) คืนค่า BuildingBlock ที่ให้เนื้อหา placeholder ของ SDT เมื่อว่างเปล่า.
สรุป API Reference
| คลาส / เมธอด | คำอธิบาย |
|---|---|
Document.GlossaryDocument | ส่วน GlossaryDocument ของเอกสาร ซึ่งเก็บบล็อกสร้างทั้งหมด |
GlossaryDocument.BuildingBlocks | BuildingBlockCollection ของบล็อกอาคารทุกอัน |
GlossaryDocument.GetBuildingBlock() | ค้นหาบล็อกอาคารโดยแกลเลอรี, หมวดหมู่, และชื่อ |
BuildingBlock | หนึ่ง CompositeNode ที่มี Name, Gallery, Category, Behavior, Type, Sections |
BuildingBlockCollection | Add(), Insert(), Remove(), Clear(), Contains(), IndexOf() |
BuildingBlockGallery / BuildingBlockType / BuildingBlockBehavior | Enums ที่จัดประเภทบล็อกการก่อสร้าง |
StructuredDocumentTag.Placeholder | The BuildingBlock ที่ใช้เป็นเนื้อหาแทนที่ของ SDT |