Word belgelerindeki Üstbilgiler ve Altbilgiler, konu, bölüm, sayfa numarası, Copywrite vb. gibi önemli bilgileri biçimlendirmek ve göstermek için kullanılır. Word belgeleriyle programlı olarak çalışırken, üstbilgiler ve altbilgiler eklemeniz veya kaldırmanız gerekebilir. Bu amaçla, bu makale size C++ kullanarak Word belgelerinde üst bilgileri ve alt bilgileri nasıl ekleyeceğinizi ve kaldıracağınızı öğretecektir.
- Word Belgelerinde Üstbilgi ve Altbilgi Eklemek ve Kaldırmak için C++ API
- C++ kullanarak Word Belgelerine Üstbilgi ve Altbilgi Ekleme
- C++ kullanarak bir Word Belgesinde Üstbilgi ve Altbilgiyi Silme
Word Belgelerinde Üstbilgi ve Altbilgi Eklemek ve Kaldırmak için C++ API
Word belgelerine üst bilgiler ve alt bilgiler eklemek için Aspose.Words for C++ API’sini kullanacağız. Microsoft Word’ün yüklenmesini gerektirmeden Word belgeleri oluşturmayı, okumayı ve değiştirmeyi destekleyen yerel bir C++ API’sidir. API’yi NuGet aracılığıyla yükleyebilir veya doğrudan İndirilenler bölümünden indirebilirsiniz.
PM> Install-Package Aspose.Words.Cpp
C++ kullanarak Word Belgelerine Üstbilgi ve Altbilgi Ekleme
Bir Word belgesindeki üst bilgiler ve alt bilgiler, başlık sayfası, çift sayfalar ve tek sayfalar olmak üzere üç bölüme ayrılır. Bu bölümler için farklı üstbilgiler ve altbilgiler ekleyebilirsiniz. Ek olarak, üstbilgilere ve altbilgilere resimler ve tablolar gibi öğeler de ekleyebilirsiniz.
Bu örnekte, yeni bir Word belgesi oluşturacağız ve başlık sayfası için farklı bir başlık ekleyeceğiz. Sonraki sayfalara resimli bir üst bilgi ve tablolu bir alt bilgi ekleyeceğiz. Word belgelerine üst bilgi ve alt bilgi ekleme adımları aşağıdadır.
- Word belgesini temsil etmesi için Document sınıfının bir örneğini oluşturun.
- Daha önce oluşturulan Document nesnesini kullanarak DocumentBuilder sınıfının bir örneğini oluşturun.
- PageSetup->setDifferentFirstPageHeaderFooter(bool value) yöntemini kullanarak başlık sayfası için farklı bir üstbilgi ve altbilgi istediğinizi belirtin.
- Başlık metni için yazı tipi özelliklerini ayarlayın.
- Sonraki sayfalar için üst bilgi ve alt bilgi oluşturun.
- DocumentBuilder->InsertImage(System::SharedPtr) kullanarak başlığa resim ekleyinSystem::Drawing::Image görüntü, Aspose::Words::Drawing::RelativeHorizontalPosition horzPos, çift sol, Aspose::Words::Drawing::RelativeVerticalPosition vertPos, çift üst, çift genişlik, çift yükseklik, Aspose::Words::Drawing::WrapType wrapType) yöntemi.
- Altbilgiye tablo ekleyin.
- Document->Save(System::String fileName) yöntemini kullanarak Word belgesini kaydedin.
Aşağıdaki örnek kod, C++ kullanarak Word belgelerine üst bilgilerin ve alt bilgilerin nasıl ekleneceğini gösterir.
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()
{
// Kaynak ve çıktı dizini yolları.
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();
// İlk sayfanın üstbilgilerinin/altbilgilerinin diğer sayfalardan farklı olmasını isteyip istemediğimizi belirtin.
// Belirtmek için PageSetup.OddAndEvenPagesHeaderFooter özelliğini de kullanabilirsiniz.
// Tek ve çift sayfalar için farklı üst bilgiler/alt bilgiler.
pageSetup->set_DifferentFirstPageHeaderFooter(true);
// --- İlk sayfa için başlık oluşturun. ---
pageSetup->set_HeaderDistance(20);
builder->MoveToHeaderFooter(HeaderFooterType::HeaderFirst);
builder->get_ParagraphFormat()->set_Alignment(ParagraphAlignment::Center);
// Başlık metni için yazı tipi özelliklerini ayarlayın.
builder->get_Font()->set_Name(u"Arial");
builder->get_Font()->set_Bold(true);
builder->get_Font()->set_Size(14);
// İlk sayfa için başlık başlığını belirtin.
builder->Write(u"Aspose.Words Header/Footer Creation Primer - Title Page.");
// --- İlk sayfa dışındaki sayfalar için başlık oluşturun. ---
pageSetup->set_HeaderDistance(20);
builder->MoveToHeaderFooter(HeaderFooterType::HeaderPrimary);
// Başlığın üst/sol köşesine kesinlikle konumlandırılmış görüntü ekleyin.
// Sayfanın üst/sol kenarlarından uzaklık 10 punto olarak ayarlanmıştır.
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);
// Diğer sayfalar için başlık başlığı belirtin.
builder->Write(u"Aspose.Words Header/Footer Creation Primer.");
// --- İlk sayfa dışındaki sayfalar için altbilgi oluşturun. ---
builder->MoveToHeaderFooter(HeaderFooterType::FooterPrimary);
// Satırdaki metnin bir bölümünü yapmak için iki hücreli tablo kullanıyoruz (sayfa numaralandırmalı)
// Sola hizalanacak ve metnin diğer kısmı (telif hakkı ile) sağa hizalanacak.
builder->StartTable();
// Tablo kenarlıklarını temizleyin.
builder->get_CellFormat()->ClearFormatting();
builder->InsertCell();
// İlk hücreyi sayfa genişliğinin 1/3'üne ayarlayın.
builder->get_CellFormat()->set_PreferredWidth(PreferredWidth::FromPercent(100 / 3));
// Sayfa numaralandırma metnini buraya ekleyin.
// Geçerli sayfa numarasını ve toplam sayfa sayısını otomatik olarak hesaplamak için PAGE ve NUMPAGES alanlarını kullanır.
builder->Write(u"Page ");
builder->InsertField(u"PAGE", u"");
builder->Write(u" of ");
builder->InsertField(u"NUMPAGES", u"");
// Bu metni sola hizalayın.
builder->get_CurrentParagraph()->get_ParagraphFormat()->set_Alignment(ParagraphAlignment::Left);
builder->InsertCell();
// İkinci hücreyi sayfa genişliğinin 2/3'ü olarak ayarlayın.
builder->get_CellFormat()->set_PreferredWidth(PreferredWidth::FromPercent(100 * 2 / 3));
builder->Write(u"(C) 2001 Aspose Pty Ltd. All rights reserved.");
// Bu metni sağa hizalayın.
builder->get_CurrentParagraph()->get_ParagraphFormat()->set_Alignment(ParagraphAlignment::Right);
builder->EndRow();
builder->EndTable();
builder->MoveToDocumentEnd();
// Birincil üstbilgilerin/altbilgilerin görüleceği ikinci bir sayfa oluşturmak için bir sayfa sonu ekleyin.
builder->InsertBreak(BreakType::PageBreak);
// Farklı sayfa yönüne sahip üçüncü bir sayfa oluşturmak için bir bölüm sonu ekleyin.
builder->InsertBreak(BreakType::SectionBreakNewPage);
// Yeni bölümü ve sayfa düzenini edinin.
currentSection = builder->get_CurrentSection();
pageSetup = currentSection->get_PageSetup();
// Yeni bölümün sayfa yönlendirmesini yatay olarak ayarlayın.
pageSetup->set_Orientation(Orientation::Landscape);
// Bu bölüm farklı ilk sayfa üst bilgisine/alt bilgisine ihtiyaç duymaz.
// Belgede yalnızca bir başlık sayfasına ihtiyacımız var. Bu sayfanın üstbilgisi/altbilgisi
// önceki bölümde zaten tanımlanmıştı
pageSetup->set_DifferentFirstPageHeaderFooter(false);
// Bu bölüm, varsayılan olarak önceki bölümden üstbilgileri/altbilgileri görüntüler.
// Bu davranışı iptal etmek için currentSection.HeadersFooters.LinkToPrevious(false) öğesini çağırın.
// Yeni bölüm için sayfa genişliği farklıdır ve bu nedenle ayarlamamız gerekir.
// altbilgi tablosu için farklı hücre genişlikleri.
currentSection->get_HeadersFooters()->LinkToPrevious(false);
// Bu bölüm için zaten var olan üstbilgi/altbilgi setini kullanmak istiyorsak
// ancak bazı küçük değişikliklerle üstbilgileri/altbilgileri kopyalamak uygun olabilir
// önceki bölümden ve istediğimiz yerde gerekli değişiklikleri uygulayın.
CopyHeadersFootersFromPreviousSection(currentSection);
// Değiştirmek istediğimiz altbilgiyi bulun.
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";
// Ortaya çıkan belgeyi kaydedin.
doc->Save(outputPath);
}
C++ kullanarak bir Word Belgesinde Üstbilgi ve Altbilgiyi Silme
Önceki bölümde, Word belgelerine üstbilgi ve altbilgi eklemeyi öğrendiniz. Eklemeye benzer şekilde, ihtiyaçlarınıza göre başlık, çift ve tek sayfalardan üstbilgileri ve altbilgileri kaldırabilirsiniz. Aşağıda, bir Word belgesindeki tüm üstbilgileri ve altbilgileri silme adımları verilmiştir.
- Belge sınıfını kullanarak Word belgesini yükleyin.
- Üst bilgileri ve alt bilgileri temsil etmek için HeaderFooter sınıfının iki örneğini oluşturun.
- Section->getHeadersFooters()->idxget(Aspose::Words::HeaderFooterType headerFooterType) yöntemini kullanarak başlık, çift ve tek sayfalar için üst bilgileri ve alt bilgileri alın.
- HeaderFooter->Remove() yöntemini kullanarak üst bilgileri ve alt bilgileri kaldırın.
- Document->Save(System::String fileName) yöntemini kullanarak Word belgesini kaydedin.
Aşağıdaki örnek kod, C++ kullanarak bir Word belgesindeki tüm üstbilgilerin ve altbilgilerin nasıl silineceğini gösterir.
// Kaynak ve çıktı dizini yolları.
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))
{
// Bir bölümde en fazla üç farklı üst bilgi ve alt bilgi mümkündür (ilk, çift ve tek sayfalar için).
// Hepsini kontrol edip siliyoruz.
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();
}
// Tek sayfalar için birincil üstbilgi ve altbilgi kullanılır.
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();
}
}
// Çıktı dosyası yolu
System::String outputPath = outputDataDir + u"RemoveFooters.docx";
// Belgeyi kaydedin.
doc->Save(outputPath);
Ücretsiz Lisans Alın
Ücretsiz bir geçici lisans talep ederek değerlendirme sınırlamaları olmadan API’yi deneyebilirsiniz.
Çözüm
Word belgelerinde üstbilgiler ve altbilgilerle çalışmak yaygın ve sık kullanılan bir durumdur. Bu makalede, C++ kullanarak Word belgelerinde üst bilgiler ve alt bilgilerle nasıl çalışacağınızı öğrendiniz. Özellikle, Aspose.Words for C++ API kullanarak Word belgelerinde üst bilgileri ve alt bilgileri nasıl ekleyeceğinizi ve kaldıracağınızı öğrendiniz. API, Word belgeleriyle çalışmak için resmi belgeleri ziyaret ederek ayrıntılı olarak keşfedebileceğiniz bir dizi ek özellik sağlar. Herhangi bir sorunuz olursa lütfen ücretsiz destek forumumuzda bize ulaşmaktan çekinmeyin.