ทำงานกับ Sections

ทำงานกับส่วน

เอกสาร Word จะถูกแบ่งออกเป็นหนึ่งหรือหลายส่วน แต่ละส่วนมีการตั้งค่าหน้ากระดาษ, ระยะขอบ, ส่วนหัวและส่วนท้ายของตนเอง. Aspose.Words FOSS สำหรับ .NET แสดงส่วนเป็น Section โหนดที่บรรจุ Body และ, ตามความต้องการ, ส่วนหัวและส่วนท้าย, พร้อมกับ PageSetup ที่ควบคุมการจัดวางของมัน หน้านี้ครอบคลุมโมเดลวัตถุของส่วน การตั้งค่าหน้ากระดาษ ส่วนหัวและส่วนท้าย และการจัดวางข้อความหลายคอลัมน์.


โมเดลวัตถุของส่วน

Document.Sections คืนค่า SectionCollection – ทุก Section ในเอกสาร, แต่ละอันเป็น CompositeNode และเป็นส่วนหนึ่งของต้นไม้โหนด. Section มีหนึ่ง Body (คือ Story ที่เก็บย่อหน้าหลักและตารางของส่วน) และเมื่อมี, โหนด HeaderFooter ที่เข้าถึงได้ผ่าน Section.HeadersFooters, ซึ่งเป็น HeaderFooterCollection. Document.FirstSection และ Document.LastSection ให้การเข้าถึงโดยตรงไปยังส่วนขอบเขต. Section.AppendContent(), PrependContent(), และ ClearContent() จัดการเนื้อหาร่างของส่วนเป็นกลุ่ม, ในขณะที่ ClearHeadersFooters() และ DeleteHeaderFooterShapes() ลบเนื้อหาส่วนหัว/ส่วนท้าย.


การสร้างส่วนและการแทรกการแบ่งส่วน

DocumentBuilder.InsertBreak(BreakType) แทรกการแบ่งที่ตำแหน่งเคอร์เซอร์; BreakType รวม SectionBreakNewPage, SectionBreakContinuous, SectionBreakNewColumn, SectionBreakEvenPage, และ SectionBreakOddPage เพื่อเริ่มส่วนใหม่, พร้อมกับค่าที่ไม่ได้เป็นส่วน PageBreak, ColumnBreak, LineBreak, และ ParagraphBreak. DocumentBuilder.MoveToSection() ย้ายเคอร์เซอร์ไปยังจุดเริ่มต้นของเนื้อหาร่างของส่วนที่ระบุ. PageSetup.SectionStart อ่านหรือกำหนดประเภทการแบ่ง SectionStart ที่บันทึกไว้ในส่วนที่มีอยู่.


การตั้งค่าหน้า

Section.PageSetup คืออินสแตนซ์ PageSetup ที่ครอบคลุมขนาดหน้าและขอบหน้า (PageWidth, PageHeight, TopMargin, BottomMargin, LeftMargin, RightMargin, Gutter), Orientation และ PaperSize, และขอบหน้าตามด้าน (Borders, BorderAppliesTo ผ่าน PageBorderAppliesTo, BorderDistanceFrom ผ่าน PageBorderDistanceFrom, BorderAlwaysInFront, BorderSurroundsHeader, BorderSurroundsFooter). การจัดลำดับบรรทัดถูกควบคุมโดย LineNumberRestartMode, LineNumberCountBy, LineNumberDistanceFromText, และ LineStartingNumber. PageSetup.ClearFormatting() รีเซ็ตกลับเป็นค่าเริ่มต้น.


ส่วนหัวและส่วนท้าย

Section.HeadersFooters คือ HeaderFooterCollection ที่มีตัวเข้าถึงแบบกำหนดประเภท – HeaderPrimary, HeaderFirst, HeaderEven, FooterPrimary, FooterFirst, FooterEven – พร้อมกับ GetByHeaderFooterType(), Add() และ LinkToPrevious(). แต่ละ HeaderFooter เป็น Story (เช่น Body) ที่ระบุด้วย HeaderFooterType และทำเครื่องหมายเป็น IsHeader / IsLinkedToPrevious. PageSetup.DifferentFirstPageHeaderFooter และ PageSetup.OddAndEvenPagesHeaderFooter ควบคุมว่า Word คาดหวังให้ใช้ตัวแปรส่วนหัว/ส่วนท้ายของหน้าแรกและหน้าคู่หรือไม่.


หลายคอลัมน์ข้อความ

PageSetup.TextColumns ส่งคืน TextColumnCollection (Count, EvenlySpaced, LineBetween, Spacing, Width) พร้อมกับ SetCount() เพื่อจัดเรียงเนื้อหาของส่วนในหลายคอลัมน์. คอลัมน์แต่ละคอลัมน์เป็นอินสแตนซ์ TextColumn (Width, SpaceAfter) เมื่อคอลเลกชันมีมากกว่าหนึ่งคอลัมน์.


เคล็ดลับและแนวปฏิบัติที่ดีที่สุด

  • การแบ่งส่วนพารย้ายการจัดรูปแบบสำหรับส่วนที่ follows มัน – การตั้งค่า PageSetup คุณสมบัติบน a Section คุณเพิ่งสร้าง (หลัง InsertBreak) มีผลต่อเนื้อหาที่ตามมาหลังการหยุด, ไม่ใช่ก่อนหน้า.
  • ใช้ SectionBreakContinuous เมื่อคุณต้องการเปลี่ยนการตั้งค่าหน้าเท่านั้น (เช่น สลับเป็นข้อความหลายคอลัมน์) โดยไม่ต้องเริ่มหน้ใหม่; ใช้ SectionBreakNewPage เมื่อส่วนใหม่ควรเริ่มต้นบนหน้าว่างใหม่เสมอ.
  • HeaderFooterCollection.LinkToPrevious() เชื่อมส่วนหัว/ส่วนท้ายของส่วนใหม่ให้สืบทอดเนื้อหาจากส่วนก่อนหน้า – ทำเช่นนี้ก่อนเขียนเนื้อหาส่วนหัว/ส่วนท้ายใหม่หากคุณต้องการให้ส่วนใหม่เริ่มต้นแยกจากส่วนก่อนหน้า.
  • PageSetup.DifferentFirstPageHeaderFooter และ OddAndEvenPagesHeaderFooter จะมีผลเฉพาะเมื่อรูปแบบ HeaderFooterType ที่สอดคล้องกัน (HeaderFirst, HeaderEven, เป็นต้น) มีอยู่จริงใน Section.HeadersFooters – เปิดใช้งานแฟล็กและเพิ่มส่วนหัว/ส่วนท้ายที่สอดคล้องกันพร้อมกัน.
  • Section.Body และแต่ละ HeaderFooter เป็นอินสแตนซ์ Story แยกกัน – Range.Fields, บุ๊กมาร์ก, และการดำเนินการแบบช่วงอื่น ๆ บน Body ของส่วนจะไม่ขยายอัตโนมัติไปยังส่วนหัวและส่วนท้ายของมัน.

ปัญหาทั่วไป

ปัญหาสาเหตุวิธีแก้
การตั้งค่าหน้าของส่วนใหม่ไม่ตรงกับที่ฉันตั้งค่าPageSetup ถูกตั้งค่าบนอินสแตนซ์ Section ที่ผิดตั้งค่า PageSetup บนส่วนที่ follows การแบ่ง, ไม่ใช่อันก่อนหน้า
เนื้อหา header/footer จากส่วนก่อนหน้าปรากฏโดยไม่คาดคิดในส่วนใหม่header/footer ของส่วนใหม่ยังคงเชื่อมต่อกับส่วนก่อนหน้าเรียก HeaderFooterCollection.LinkToPrevious(false) (หรือเพิ่มเนื้อหา header/footer ที่แตกต่าง) เพื่อยกเลิกการเชื่อมโยง
header/footer ของหน้าแรกหรือหน้าคู่จะถูกละเลยDifferentFirstPageHeaderFooter / OddAndEvenPagesHeaderFooter คือ false, หรือรูปแบบ HeaderFooterType ที่ตรงกันไม่มีอยู่ตั้งค่าแฟล็กบน PageSetup และตรวจสอบให้แน่ใจว่าตัวแปรส่วนหัว/ส่วนท้ายที่สอดคล้องกันมีอยู่
รูปแบบหลายคอลัมน์ไม่ใช้ได้TextColumns.SetCount() ถูกเรียกด้วยจำนวน 1, หรือบน PageSetup ของส่วนที่ไม่ถูกต้องเรียก SetCount() โดยใช้มากกว่าหนึ่งคอลัมน์บน PageSetup.TextColumns ของส่วนเป้าหมาย

FAQ

ฉันจะเริ่มส่วนใหม่โดยไม่เริ่มหน้าใหม่ได้อย่างไร?

แทรกการหยุด SectionBreakContinuous ด้วย DocumentBuilder.InsertBreak(BreakType.SectionBreakContinuous).

ฉันจะกำหนดขอบและการวางแนวของส่วนให้เป็นของตัวเองได้อย่างไร?

แทรกการแบ่งส่วน, จากนั้นตั้งค่าคุณสมบัติบน PageSetup ของส่วนใหม่ – TopMargin, BottomMargin, LeftMargin, RightMargin, Orientation และ PaperSize.

ฉันจะทำให้หน้าตัวแรกของส่วนใช้หัวเรื่องที่แตกต่างกันได้อย่างไร?

ตั้งค่า PageSetup.DifferentFirstPageHeaderFooter = true บนส่วนนั้น, และเพิ่ม HeaderFooter ชนิด HeaderFirst (และ FooterFirst, หากจำเป็น) ไปยังคอลเลกชัน HeadersFooters ของมัน.

ฉันจะจัดวางข้อความหลักของส่วนเป็นสองคอลัมน์ได้อย่างไร?

เรียก PageSetup.TextColumns.SetCount(2) บนส่วนนั้น, จากนั้นปรับค่า Spacing และ EvenlySpaced / ค่า TextColumn.Width แต่ละค่า ตามที่ต้องการ.


API Reference สรุป

คลาส / Enumคำอธิบาย
Sectionโหนดส่วน; Body, HeadersFooters, PageSetup
SectionCollectionทุก Section ในเอกสาร, ผ่าน Document.Sections
Body / Storyคอนเทนเนอร์เนื้อหาหลักสำหรับส่วน (Body) หรือส่วนหัว/ส่วนท้าย (HeaderFooter)
PageSetupขนาดหน้า, ระยะขอบ, การวางแนว, กรอบ, และคอลัมน์สำหรับส่วน
HeaderFooter / HeaderFooterCollectionเนื้อหา header/footer และตัวเข้าถึงที่ระบุประเภทสำหรับส่วน
HeaderFooterTypeระบุว่า HeaderFooter เป็น header/footer รุ่นใด (primary, first, even)
TextColumn / TextColumnCollectionการจัดวางข้อความหลายคอลัมน์สำหรับส่วน
PaperSize / Orientation / Marginsขนาดหน้า, การจัดแนว, และค่าขอบกระดาษที่กำหนดล่วงหน้า
PageBorderAppliesTo / PageBorderDistanceFromหน้าที่ขอบกระดาษพิมพ์ออกและขอบอ้างอิงของมัน
SectionStart / BreakTypeประเภทการแบ่งส่วนที่บันทึกบนส่วนหนึ่ง และประเภทการแบ่งที่ DocumentBuilder.InsertBreak() ยอมรับ
LineNumberRestartModeเมื่อการนับลำดับบรรทัดอัตโนมัติเริ่มต้นใหม่ภายในส่วน

ดูเพิ่มเติม

 ภาษาไทย