تُستخدم الرؤوس والتذييلات في مستندات Word لتنسيق وإظهار معلومات مهمة مثل الموضوع والفصل ورقم الصفحة وكتابة النسخ وما إلى ذلك. أثناء العمل مع مستندات Word برمجيًا ، قد تحتاج إلى إضافة أو إزالة الرؤوس والتذييلات. تحقيقًا لهذه الغاية ، ستعلمك هذه المقالة كيفية إضافة وإزالة الرؤوس والتذييلات في مستندات Word باستخدام C ++.
- واجهة برمجة تطبيقات C ++ لإضافة وإزالة الرأس والتذييل في مستندات Word
- إضافة رأس وتذييل في مستندات Word باستخدام C ++
- حذف الرأس والتذييل في مستند Word باستخدام C ++
واجهة برمجة تطبيقات C ++ لإضافة وإزالة الرأس والتذييل في مستندات Word
لإضافة الرؤوس والتذييلات في مستندات Word ، سنستخدم واجهة برمجة التطبيقات Aspose.Words for C ++. إنها واجهة برمجة تطبيقات C ++ أصلية تدعم إنشاء مستندات 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 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-> getHeadersFooters() -> 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);
احصل على رخصة مجانية
يمكنك تجربة واجهة برمجة التطبيقات بدون قيود تقييمية عن طريق طلب ترخيص مؤقت مجاني.
استنتاج
يعد العمل مع الرؤوس والتذييلات في مستندات Word حالة استخدام شائعة ومتكررة. في هذه المقالة ، تعلمت كيفية العمل مع الرؤوس والتذييلات في مستندات Word باستخدام C ++. على وجه التحديد ، لقد تعلمت كيفية إضافة وإزالة الرؤوس والتذييلات في مستندات Word باستخدام Aspose.Words for C ++ API. توفر واجهة برمجة التطبيقات مجموعة من الميزات الإضافية للعمل مع مستندات Word التي يمكنك استكشافها بالتفصيل من خلال زيارة الوثائق الرسمية. في حالة وجود أي أسئلة ، لا تتردد في الاتصال بنا على منتدى الدعم المجاني.