ส่วนหัวและส่วนท้ายในเอกสาร Word ใช้เพื่อจัดรูปแบบและแสดงข้อมูลสำคัญ เช่น หัวข้อ บท หมายเลขหน้า Copywrite เป็นต้น ในขณะที่ทำงานกับเอกสาร Word โดยทางโปรแกรม คุณอาจต้องเพิ่มหรือลบส่วนหัวและส่วนท้าย ด้วยเหตุนี้ บทความนี้จะสอนวิธีเพิ่มและลบส่วนหัวและส่วนท้ายในเอกสาร Word โดยใช้ C++
- C ++ API สำหรับการเพิ่มและลบส่วนหัวและส่วนท้ายในเอกสาร Word
- เพิ่มส่วนหัวและส่วนท้ายในเอกสาร Word โดยใช้ C ++
- ลบส่วนหัวและส่วนท้ายในเอกสาร Word โดยใช้ C ++
C ++ API สำหรับการเพิ่มและลบส่วนหัวและส่วนท้ายในเอกสาร Word
ในการเพิ่มส่วนหัวและส่วนท้ายในเอกสาร Word เราจะใช้ API Aspose.Words for C++ เป็น C++ API ดั้งเดิมที่รองรับการสร้าง อ่าน และแก้ไขเอกสาร Word โดยไม่ต้องติดตั้ง Microsoft Word คุณสามารถติดตั้ง API ผ่าน NuGet หรือดาวน์โหลดโดยตรงจากส่วน ดาวน์โหลด
PM> Install-Package Aspose.Words.Cpp
เพิ่มส่วนหัวและส่วนท้ายในเอกสาร Word โดยใช้ C ++
ส่วนหัวและส่วนท้ายในเอกสาร Word แบ่งออกเป็นสามส่วน หน้าชื่อ หน้าคู่ และหน้าคี่ คุณสามารถเพิ่มส่วนหัวและส่วนท้ายที่แตกต่างกันสำหรับส่วนเหล่านี้ นอกจากนี้ คุณยังสามารถเพิ่มองค์ประกอบต่างๆ เช่น รูปภาพและตารางในส่วนหัวและส่วนท้าย
ในตัวอย่างนี้ เราจะสร้างเอกสาร Word ใหม่และเพิ่มส่วนหัวอื่นสำหรับหน้าชื่อเรื่อง เราจะเพิ่มส่วนหัวพร้อมรูปภาพและส่วนท้ายพร้อมตารางในหน้าถัดไป ต่อไปนี้เป็นขั้นตอนในการเพิ่มส่วนหัวและส่วนท้ายในเอกสาร Word
- สร้างอินสแตนซ์ของคลาส Document เพื่อแสดงเอกสาร Word
- สร้างอินสแตนซ์ของคลาส DocumentBuilder โดยใช้ออบเจกต์ Document ที่สร้างไว้ก่อนหน้านี้
- ระบุว่าคุณต้องการส่วนหัวและส่วนท้ายที่แตกต่างกันสำหรับหน้าชื่อโดยใช้เมธอด PageSetup->setDifferentFirstPageHeaderFooter(ค่าบูล)
- ตั้งค่าคุณสมบัติแบบอักษรสำหรับข้อความส่วนหัว
- สร้างส่วนหัวและส่วนท้ายสำหรับหน้าถัดไป
- เพิ่มรูปภาพในส่วนหัวโดยใช้ DocumentBuilder->InsertImage(System::SharedPtrSystem::Drawing::Image รูปภาพ, Aspose::Words::Drawing::RelativeHorizontalPosition horzPos, double left, Aspose::Words::Drawing::RelativeVerticalPosition vertPos, double top, double width, double height, Aspose::Words::Drawing::WrapType wrapType) วิธีการ
- เพิ่มตารางในส่วนท้าย
- บันทึกเอกสาร Word โดยใช้วิธี Document->Save(System::String fileName)
โค้ดตัวอย่างต่อไปนี้สาธิตวิธีการเพิ่มส่วนหัวและส่วนท้ายในเอกสาร Word โดยใช้ C++
void CopyHeadersFootersFromPreviousSection(const System::SharedPtr<Section>& section)
{
System::SharedPtr<Section> previousSection = System::DynamicCast<Section>(section->get_PreviousSibling());
if (previousSection == nullptr)
{
return;
}
section->get_HeadersFooters()->Clear();
for (System::SharedPtr<Node> headerFooterNode : System::IterateOver(previousSection->get_HeadersFooters()))
{
section->get_HeadersFooters()->Add(headerFooterNode->Clone(true));
}
}
int main()
{
// พาธไดเร็กทอรีต้นทางและเอาต์พุต
System::String inputDataDir = u"SourceDirectory\\";
System::String outputDataDir = u"OutputDirectory\\";
System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
System::SharedPtr<Section> currentSection = builder->get_CurrentSection();
System::SharedPtr<PageSetup> pageSetup = currentSection->get_PageSetup();
// ระบุว่าเราต้องการให้ส่วนหัว/ส่วนท้ายของหน้าแรกแตกต่างจากหน้าอื่นหรือไม่
// คุณยังสามารถใช้คุณสมบัติ PageSetup.OddAndEvenPagesHeaderFooter เพื่อระบุ
// ส่วนหัว/ส่วนท้ายที่แตกต่างกันสำหรับหน้าคี่และหน้าคู่
pageSetup->set_DifferentFirstPageHeaderFooter(true);
// --- สร้างส่วนหัวสำหรับหน้าแรก ---
pageSetup->set_HeaderDistance(20);
builder->MoveToHeaderFooter(HeaderFooterType::HeaderFirst);
builder->get_ParagraphFormat()->set_Alignment(ParagraphAlignment::Center);
// ตั้งค่าคุณสมบัติแบบอักษรสำหรับข้อความส่วนหัว
builder->get_Font()->set_Name(u"Arial");
builder->get_Font()->set_Bold(true);
builder->get_Font()->set_Size(14);
// ระบุหัวเรื่องสำหรับหน้าแรก
builder->Write(u"Aspose.Words Header/Footer Creation Primer - Title Page.");
// --- สร้างส่วนหัวสำหรับหน้าอื่นที่ไม่ใช่หน้าแรก ---
pageSetup->set_HeaderDistance(20);
builder->MoveToHeaderFooter(HeaderFooterType::HeaderPrimary);
// แทรกรูปภาพในตำแหน่งที่แน่นอนที่มุมบน/ซ้ายของส่วนหัว
// ระยะห่างจากขอบบน/ซ้ายของหน้ากำหนดเป็น 10 จุด
System::String imageFileName = inputDataDir + u"Desert.jpg";
builder->InsertImage(imageFileName, RelativeHorizontalPosition::Page, 10, RelativeVerticalPosition::Page, 10, 50, 50, WrapType::Through);
builder->get_ParagraphFormat()->set_Alignment(ParagraphAlignment::Right);
// ระบุหัวเรื่องสำหรับหน้าอื่นๆ
builder->Write(u"Aspose.Words Header/Footer Creation Primer.");
// --- สร้างส่วนท้ายสำหรับหน้าอื่นที่ไม่ใช่หน้าแรก ---
builder->MoveToHeaderFooter(HeaderFooterType::FooterPrimary);
// เราใช้ตารางที่มีสองเซลล์เพื่อสร้างส่วนหนึ่งของข้อความในบรรทัด (พร้อมหมายเลขหน้า)
// ให้ชิดซ้ายและส่วนอื่นของข้อความ (มีลิขสิทธิ์) ให้ชิดขวา
builder->StartTable();
// ล้างเส้นขอบตาราง
builder->get_CellFormat()->ClearFormatting();
builder->InsertCell();
// ตั้งค่าเซลล์แรกเป็น 1/3 ของความกว้างหน้า
builder->get_CellFormat()->set_PreferredWidth(PreferredWidth::FromPercent(100 / 3));
// ใส่ข้อความเลขหน้าที่นี่
// ใช้ฟิลด์ PAGE และ NUMPAGES เพื่อคำนวณหมายเลขหน้าปัจจุบันและจำนวนหน้าทั้งหมดโดยอัตโนมัติ
builder->Write(u"Page ");
builder->InsertField(u"PAGE", u"");
builder->Write(u" of ");
builder->InsertField(u"NUMPAGES", u"");
// จัดข้อความนี้ชิดซ้าย
builder->get_CurrentParagraph()->get_ParagraphFormat()->set_Alignment(ParagraphAlignment::Left);
builder->InsertCell();
// ตั้งค่าเซลล์ที่สองเป็น 2/3 ของความกว้างหน้า
builder->get_CellFormat()->set_PreferredWidth(PreferredWidth::FromPercent(100 * 2 / 3));
builder->Write(u"(C) 2001 Aspose Pty Ltd. All rights reserved.");
// จัดข้อความนี้ชิดขวา
builder->get_CurrentParagraph()->get_ParagraphFormat()->set_Alignment(ParagraphAlignment::Right);
builder->EndRow();
builder->EndTable();
builder->MoveToDocumentEnd();
// เพิ่มตัวแบ่งหน้าเพื่อสร้างหน้าที่สองซึ่งจะเห็นส่วนหัว/ส่วนท้ายหลัก
builder->InsertBreak(BreakType::PageBreak);
// เพิ่มตัวแบ่งส่วนเพื่อสร้างหน้าที่สามที่มีแนวหน้าต่างกัน
builder->InsertBreak(BreakType::SectionBreakNewPage);
// รับส่วนใหม่และการตั้งค่าหน้า
currentSection = builder->get_CurrentSection();
pageSetup = currentSection->get_PageSetup();
// ตั้งค่าการวางแนวหน้าของส่วนใหม่เป็นแนวนอน
pageSetup->set_Orientation(Orientation::Landscape);
// ส่วนนี้ไม่ต้องการส่วนหัว/ส่วนท้ายของหน้าแรกที่แตกต่างกัน
// เราต้องการเพียงหนึ่งหน้าชื่อเรื่องในเอกสาร ส่วนหัว/ส่วนท้ายของหน้านี้
// ได้กำหนดไว้แล้วในหัวข้อที่แล้ว
pageSetup->set_DifferentFirstPageHeaderFooter(false);
// ส่วนนี้แสดงส่วนหัว/ส่วนท้ายจากส่วนก่อนหน้าตามค่าเริ่มต้น
// โทร currentSection.HeadersFooters.LinkToPrevious(false) เพื่อยกเลิกพฤติกรรมนี้
// ความกว้างของหน้าจะแตกต่างกันสำหรับส่วนใหม่ ดังนั้นเราต้องตั้งค่า
// ความกว้างของเซลล์ต่างๆ สำหรับตารางส่วนท้าย
currentSection->get_HeadersFooters()->LinkToPrevious(false);
// หากเราต้องการใช้ชุดส่วนหัว/ส่วนท้ายที่มีอยู่แล้วสำหรับส่วนนี้
// แต่ด้วยการปรับเปลี่ยนเล็กน้อย การคัดลอกส่วนหัว/ส่วนท้ายอาจเป็นการสมควร
// จากส่วนก่อนหน้าและใช้การแก้ไขที่จำเป็นในตำแหน่งที่เราต้องการ
CopyHeadersFootersFromPreviousSection(currentSection);
// ค้นหาส่วนท้ายที่เราต้องการเปลี่ยน
System::SharedPtr<HeaderFooter> primaryFooter = currentSection->get_HeadersFooters()->idx_get(HeaderFooterType::FooterPrimary);
System::SharedPtr<Row> row = primaryFooter->get_Tables()->idx_get(0)->get_FirstRow();
row->get_FirstCell()->get_CellFormat()->set_PreferredWidth(PreferredWidth::FromPercent(100 / 3));
row->get_LastCell()->get_CellFormat()->set_PreferredWidth(PreferredWidth::FromPercent(100 * 2 / 3));
System::String outputPath = outputDataDir + u"CreateHeaderFooter.docx";
// บันทึกเอกสารผลลัพธ์
doc->Save(outputPath);
}
ลบส่วนหัวและส่วนท้ายในเอกสาร Word โดยใช้ C ++
ในส่วนก่อนหน้านี้ คุณได้เรียนรู้วิธีเพิ่มส่วนหัวและส่วนท้ายในเอกสาร Word เช่นเดียวกับการเพิ่ม คุณสามารถลบส่วนหัวและส่วนท้ายออกจากชื่อเรื่อง หน้าคู่และหน้าคี่ตามความต้องการของคุณ ต่อไปนี้เป็นขั้นตอนในการลบส่วนหัวและส่วนท้ายทั้งหมดในเอกสาร Word
- โหลดเอกสาร Word โดยใช้คลาส Document
- สร้างสองอินสแตนซ์ของคลาส HeaderFooter เพื่อแสดงส่วนหัวและส่วนท้าย
- ดึงส่วนหัวและส่วนท้ายสำหรับชื่อ หน้าคู่และหน้าคี่โดยใช้เมธอด Section->getHeadersFooter()->idxget(Aspose::Words::HeaderFooterType headerFooterType)
- ลบส่วนหัวและส่วนท้ายโดยใช้เมธอด HeaderFooter->Remove()
- บันทึกเอกสาร Word โดยใช้วิธี Document->Save(System::String fileName)
โค้ดตัวอย่างต่อไปนี้แสดงวิธีการลบส่วนหัวและส่วนท้ายทั้งหมดในเอกสาร Word โดยใช้ C++
// พาธไดเร็กทอรีต้นทางและเอาต์พุต
System::String inputDataDir = u"SourceDirectory\\";
System::String outputDataDir = u"OutputDirectory\\";
System::SharedPtr<Document> doc = System::MakeObject<Document>(inputDataDir + u"SampleHeaderFooter.docx");
for (System::SharedPtr<Section> section : System::IterateOver<System::SharedPtr<Section>>(doc))
{
// ส่วนหัวและส่วนท้ายต่างกันได้ถึงสามส่วนในส่วน (สำหรับหน้าแรก หน้าคู่ และหน้าคี่)
// เราตรวจสอบและลบทั้งหมด
System::SharedPtr<HeaderFooter> header;
System::SharedPtr<HeaderFooter> footer;
header = section->get_HeadersFooters()->idx_get(HeaderFooterType::HeaderFirst);
footer = section->get_HeadersFooters()->idx_get(HeaderFooterType::FooterFirst);
if (header != nullptr)
{
header->Remove();
}
if (footer != nullptr)
{
footer->Remove();
}
// ส่วนหัวและส่วนท้ายหลักใช้สำหรับหน้าคี่
header = section->get_HeadersFooters()->idx_get(HeaderFooterType::HeaderPrimary);
footer = section->get_HeadersFooters()->idx_get(HeaderFooterType::FooterPrimary);
if (header != nullptr)
{
header->Remove();
}
if (footer != nullptr)
{
footer->Remove();
}
header = section->get_HeadersFooters()->idx_get(HeaderFooterType::HeaderEven);
footer = section->get_HeadersFooters()->idx_get(HeaderFooterType::FooterEven);
if (header != nullptr)
{
header->Remove();
}
if (footer != nullptr)
{
footer->Remove();
}
}
// เส้นทางไฟล์เอาต์พุต
System::String outputPath = outputDataDir + u"RemoveFooters.docx";
// บันทึกเอกสาร
doc->Save(outputPath);
รับใบอนุญาตฟรี
คุณสามารถลองใช้ API ได้โดยไม่มีข้อจำกัดในการประเมินโดยขอ ใบอนุญาตชั่วคราวฟรี
บทสรุป
การทำงานกับส่วนหัวและส่วนท้ายในเอกสาร Word เป็นกรณีการใช้งานทั่วไปและบ่อยครั้ง ในบทความนี้ คุณได้เรียนรู้วิธีการทำงานกับส่วนหัวและส่วนท้ายในเอกสาร Word โดยใช้ C++ โดยเฉพาะอย่างยิ่ง คุณได้เรียนรู้วิธีเพิ่มและลบส่วนหัวและส่วนท้ายในเอกสาร Word โดยใช้ Aspose.Words for C++ API API มีคุณสมบัติเพิ่มเติมมากมายสำหรับการทำงานกับเอกสาร Word ซึ่งคุณสามารถสำรวจโดยละเอียดได้โดยไปที่ เอกสารอย่างเป็นทางการ ในกรณีที่มีคำถามใดๆ โปรดติดต่อเราได้ที่ ฟอรัมสนับสนุนฟรี