Záhlaví a zápatí v dokumentech aplikace Word se používají k formátování a zobrazení důležitých informací, jako je téma, kapitola, číslo stránky, Copywrite atd. Při programové práci s dokumenty aplikace Word může být nutné přidat nebo odebrat záhlaví a zápatí. Za tímto účelem vás tento článek naučí, jak přidávat a odstraňovat záhlaví a zápatí v dokumentech aplikace Word pomocí C++.
- C++ API pro přidávání a odebírání záhlaví a zápatí v dokumentech aplikace Word
- Přidejte záhlaví a zápatí do dokumentů aplikace Word pomocí C++
- Odstraňte záhlaví a zápatí v dokumentu aplikace Word pomocí C++
C++ API pro přidávání a odebírání záhlaví a zápatí v dokumentech aplikace Word
Chcete-li přidat záhlaví a zápatí do dokumentů aplikace Word, použijeme API Aspose.Words for C++. Jedná se o nativní C++ API, které podporuje vytváření, čtení a úpravy dokumentů aplikace Word bez nutnosti instalace aplikace Microsoft Word. Rozhraní API můžete nainstalovat buď prostřednictvím NuGet, nebo si jej stáhnout přímo ze sekce Downloads.
PM> Install-Package Aspose.Words.Cpp
Přidejte záhlaví a zápatí do dokumentů aplikace Word pomocí C++
Záhlaví a zápatí v dokumentu aplikace Word jsou rozděleny do tří částí, titulní stránka, sudé stránky a liché stránky. Pro tyto sekce můžete přidat různá záhlaví a zápatí. Kromě toho můžete také přidat prvky, jako jsou obrázky a tabulky, do záhlaví a zápatí.
V tomto příkladu vytvoříme nový dokument aplikace Word a přidáme jiné záhlaví pro titulní stránku. Na následující stránky přidáme záhlaví s obrázkem a zápatí s tabulkou. Následují kroky pro přidání záhlaví a zápatí do dokumentů aplikace Word.
- Vytvořte instanci třídy Document, která bude reprezentovat dokument aplikace Word.
- Vytvořte instanci třídy DocumentBuilder pomocí dříve vytvořeného objektu Document.
- Pomocí metody PageSetup->setDifferentFirstPageHeaderFooter(bool value) určete, že chcete pro titulní stránku použít jiné záhlaví a zápatí.
- Nastavte vlastnosti písma pro text záhlaví.
- Vytvořte záhlaví a zápatí pro následující stránky.
- Přidejte obrázek do záhlaví pomocí DocumentBuilder->InsertImage(System::SharedPtrSystem::Drawing::Image obrázek, Aspose::Slova::Výkres::RelativeHorizontalPosition horzPos, dvakrát vlevo, Aspose::Words::Výkres::RelativeVerticalPosition vertPos, dvojitý vrchol, dvojitá šířka, dvojitá výška, Aspose::Slova::Výkres::WrapType wrapType metoda.
- Přidejte tabulku do zápatí.
- Uložte dokument aplikace Word pomocí metody Document->Save(System::String fileName).
Následující ukázkový kód ukazuje, jak přidat záhlaví a zápatí do dokumentů aplikace Word pomocí 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()
{
// Cesty zdrojového a výstupního adresáře.
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();
// Určete, zda chceme, aby se záhlaví/zápatí první stránky lišilo od ostatních stránek.
// K určení můžete také použít vlastnost PageSetup.OddAndEvenPagesHeaderFooter
// Různá záhlaví/zápatí pro liché a sudé stránky.
pageSetup->set_DifferentFirstPageHeaderFooter(true);
// --- Vytvořit záhlaví pro první stránku. ---
pageSetup->set_HeaderDistance(20);
builder->MoveToHeaderFooter(HeaderFooterType::HeaderFirst);
builder->get_ParagraphFormat()->set_Alignment(ParagraphAlignment::Center);
// Nastavte vlastnosti písma pro text záhlaví.
builder->get_Font()->set_Name(u"Arial");
builder->get_Font()->set_Bold(true);
builder->get_Font()->set_Size(14);
// Zadejte název záhlaví pro první stránku.
builder->Write(u"Aspose.Words Header/Footer Creation Primer - Title Page.");
// --- Vytvořit záhlaví pro stránky jiné než první. ---
pageSetup->set_HeaderDistance(20);
builder->MoveToHeaderFooter(HeaderFooterType::HeaderPrimary);
// Vložte absolutně umístěný obrázek do horního/levého rohu záhlaví.
// Vzdálenost od horního/levého okraje stránky je nastavena na 10 bodů.
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);
// Pro další stránky zadejte nadpis záhlaví.
builder->Write(u"Aspose.Words Header/Footer Creation Primer.");
// --- Vytvořit zápatí pro stránky jiné než první. ---
builder->MoveToHeaderFooter(HeaderFooterType::FooterPrimary);
// Pomocí tabulky se dvěma buňkami vytvoříme jednu část textu na řádku (s číslováním stránek)
// Zarovnat doleva a druhou část textu (s autorským právem) zarovnat doprava.
builder->StartTable();
// Vymazat okraje tabulky.
builder->get_CellFormat()->ClearFormatting();
builder->InsertCell();
// Nastavte první buňku na 1/3 šířky stránky.
builder->get_CellFormat()->set_PreferredWidth(PreferredWidth::FromPercent(100 / 3));
// Sem vložte text číslování stránek.
// K automatickému výpočtu aktuálního čísla stránky a celkového počtu stránek používá pole PAGE a NUMPAGES.
builder->Write(u"Page ");
builder->InsertField(u"PAGE", u"");
builder->Write(u" of ");
builder->InsertField(u"NUMPAGES", u"");
// Zarovnejte tento text doleva.
builder->get_CurrentParagraph()->get_ParagraphFormat()->set_Alignment(ParagraphAlignment::Left);
builder->InsertCell();
// Nastavte druhou buňku na 2/3 šířky stránky.
builder->get_CellFormat()->set_PreferredWidth(PreferredWidth::FromPercent(100 * 2 / 3));
builder->Write(u"(C) 2001 Aspose Pty Ltd. All rights reserved.");
// Zarovnejte tento text doprava.
builder->get_CurrentParagraph()->get_ParagraphFormat()->set_Alignment(ParagraphAlignment::Right);
builder->EndRow();
builder->EndTable();
builder->MoveToDocumentEnd();
// Přidáním konce stránky vytvoříte druhou stránku, na které budou vidět primární záhlaví/zápatí.
builder->InsertBreak(BreakType::PageBreak);
// Přidáním konce oddílu vytvoříte třetí stránku s jinou orientací stránky.
builder->InsertBreak(BreakType::SectionBreakNewPage);
// Získejte novou sekci a její nastavení stránky.
currentSection = builder->get_CurrentSection();
pageSetup = currentSection->get_PageSetup();
// Nastavte orientaci stránky nové sekce na šířku.
pageSetup->set_Orientation(Orientation::Landscape);
// Tato sekce nepotřebuje jiné záhlaví/zápatí první stránky.
// V dokumentu potřebujeme pouze jednu titulní stránku. Záhlaví/zápatí této stránky
// již bylo definováno v předchozí části
pageSetup->set_DifferentFirstPageHeaderFooter(false);
// Tato sekce standardně zobrazuje záhlaví/zápatí z předchozí sekce.
// Toto chování zrušíte voláním currentSection.HeadersFooters.LinkToPrevious(false).
// Šířka stránky je pro novou sekci jiná, a proto ji musíme nastavit
// různé šířky buněk pro tabulku zápatí.
currentSection->get_HeadersFooters()->LinkToPrevious(false);
// Pokud chceme pro tuto sekci použít již existující sadu záhlaví/zápatí
// ale s některými drobnými úpravami pak může být účelné zkopírovat záhlaví/zápatí
// z předchozí části a aplikujte potřebné úpravy tam, kde je chceme.
CopyHeadersFootersFromPreviousSection(currentSection);
// Najděte zápatí, které chceme změnit.
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";
// Uložte výsledný dokument.
doc->Save(outputPath);
}
Odstraňte záhlaví a zápatí v dokumentu aplikace Word pomocí C++
V předchozí části jste se naučili přidávat záhlaví a zápatí do dokumentů aplikace Word. Podobně jako u přidávání můžete z nadpisu odstranit záhlaví a zápatí, sudé a liché stránky podle vašich potřeb. Následují kroky k odstranění všech záhlaví a zápatí v dokumentu aplikace Word.
- Načtěte dokument aplikace Word pomocí třídy Document.
- Vytvořte dvě instance třídy HeaderFooter, které budou reprezentovat záhlaví a zápatí.
- Načtěte záhlaví a zápatí pro nadpis, sudé a liché stránky pomocí metody Section->getHeadersFooters()->idxget(Aspose::Words::HeaderFooterType headerFooterType).
- Odstraňte záhlaví a zápatí pomocí metody HeaderFooter->Remove().
- Uložte dokument aplikace Word pomocí metody Document->Save(System::String fileName).
Následující ukázkový kód ukazuje, jak odstranit všechna záhlaví a zápatí v dokumentu aplikace Word pomocí C++.
// Cesty zdrojového a výstupního adresáře.
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))
{
// V sekci jsou možné až tři různá záhlaví a zápatí (pro první, sudé a liché stránky).
// Všechny zkontrolujeme a odstraníme.
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();
}
// Primární záhlaví a zápatí se používá pro liché stránky.
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();
}
}
// Cesta k výstupnímu souboru
System::String outputPath = outputDataDir + u"RemoveFooters.docx";
// Uložte dokument.
doc->Save(outputPath);
Získejte bezplatnou licenci
Rozhraní API můžete vyzkoušet bez omezení hodnocení tím, že požádáte o bezplatnou dočasnou licenci.
Závěr
Práce se záhlavím a zápatím v dokumentech Wordu je běžným a častým případem použití. V tomto článku jste se naučili pracovat se záhlavím a zápatím v dokumentech aplikace Word pomocí C++. Konkrétně jste se naučili přidávat a odstraňovat záhlaví a zápatí v dokumentech aplikace Word pomocí Aspose.Words for C++ API. Rozhraní API poskytuje spoustu dalších funkcí pro práci s dokumenty Wordu, které můžete podrobně prozkoumat na oficiální dokumentaci. V případě jakýchkoli dotazů nás neváhejte kontaktovat na našem bezplatném fóru podpory.