Obter, Atualizar e Expandir um Favorito

Obter Favoritos

A coleção OutlineCollection do objeto Document contém todos os favoritos de um arquivo PDF. Este artigo explica como obter favoritos de um arquivo PDF e como obter em qual página um determinado favorito está.

Para obter os favoritos, percorra a coleção OutlineCollection e obtenha cada favorito na OutlineItemCollection. O OutlineItemCollection fornece acesso a todos os atributos do marcador. O seguinte trecho de código mostra como obter marcadores do arquivo PDF.

void GettingBookmarks() {

String _dataDir("C:\\Samples\\Bookmarks\\");

// Abrir documento

auto pdfDocument = MakeObject<Document>(_dataDir + u"UpdateBookmarks.pdf");

// Percorrer todos os marcadores

for (auto outlineItem : pdfDocument->get_Outlines()) {


Console::WriteLine(u"Título :- " + outlineItem->get_Title());


Console::WriteLine(u"É Itálico :- " + outlineItem->get_Italic());


Console::WriteLine(u"É Negrito :- " + outlineItem->get_Bold());


Console::WriteLine(u"Cor :- {0}", outlineItem->get_Color());

}
}

Obtendo o Número da Página de um Marcador

Depois de adicionar um marcador, você pode descobrir em qual página ele está obtendo o número da página de destino associado ao objeto Bookmark.

void GettingBookmarksPageNumber() {


String _dataDir("C:\\Samples\\Bookmarks\\");

// Criar PdfBookmarkEditor

auto bookmarkEditor = MakeObject<Aspose::Pdf::Facades::PdfBookmarkEditor>();

// Abrir arquivo PDF

bookmarkEditor->BindPdf(_dataDir + u"UpdateBookmarks.pdf");

// Extrair marcadores

auto bookmarks = bookmarkEditor->ExtractBookmarks();

for (auto bookmark : bookmarks) {


String strLevelSeprator("");


for (int i = 1; i < bookmark->get_Level(); i++) {



strLevelSeprator += u"---- ";


}


Console::WriteLine(u"Título :- " + strLevelSeprator + bookmark->get_Title());


Console::WriteLine(u"Número da Página :- " + strLevelSeprator + bookmark->get_PageNumber());


Console::WriteLine(u"Ação da Página :- " + strLevelSeprator + bookmark->get_Action());

}
}

Atualizar Favoritos em um Documento PDF

Para atualizar um favorito em um arquivo PDF, primeiro, obtenha o favorito específico da coleção OutlineColletion do objeto Document especificando o índice do favorito. Uma vez que você tenha recuperado o favorito no objeto OutlineItemCollection, você pode atualizar suas propriedades e então salvar o arquivo PDF atualizado usando o método Save. Os snippets de código a seguir mostram como atualizar favoritos em um documento PDF.

void UpdateBookmarksInPDFDocument() {


String _dataDir("C:\\Samples\\Bookmarks\\");

// Abrir documento

auto pdfDocument = MakeObject<Document>(_dataDir + u"UpdateBookmarks.pdf");

// Obter um objeto de favorito

auto pdfOutline = pdfDocument->get_Outlines()->idx_get(1);


// Atualizar o objeto de favorito

pdfOutline->set_Title(u"Updated Outline");

pdfOutline->set_Italic(true);

pdfOutline->set_Bold(true);

// Definir a página alvo como 2

pdfOutline->set_Destination(MakeObject<Aspose::Pdf::Annotations::GoToAction>(pdfDocument->get_Pages()->idx_get(2)));


// Salvar saída

pdfDocument->Save(_dataDir + u"Bookmarkupdated_output.pdf");
}

Atualizar Marcadores Filhos em um Documento PDF

Para atualizar um marcador filho:

  1. Recupere o marcador filho que você deseja atualizar do arquivo PDF, primeiro obtendo o marcador pai e depois o marcador filho usando os valores de índice apropriados.
  2. Salve o arquivo PDF atualizado usando o método Save.

O trecho de código a seguir mostra como atualizar marcadores filhos em um documento PDF.

void UpdateChildBookmarksInPDFDocument() {


String _dataDir("C:\\Samples\\Bookmarks\\");

// Abrir documento

auto pdfDocument = MakeObject<Document>(_dataDir + u"UpdateBookmarks.pdf");

// Obter um objeto de marcador

auto pdfOutline = pdfDocument->get_Outlines()->idx_get(1);

// Obter objeto de marcador filho

auto childOutline = pdfOutline->idx_get(1);


// Atualizar o objeto de marcador

childOutline->set_Title(u"Updated Outline");

childOutline->set_Italic(true);

childOutline->set_Bold(true);

// Defina a página de destino como 2

childOutline->set_Destination(MakeObject<Aspose::Pdf::Annotations::GoToAction>(pdfDocument->get_Pages()->idx_get(2)));


// Salvar saída

pdfDocument->Save(_dataDir + u"Bookmarkupdated_output.pdf");
}

Marcadores Expandido ao visualizar o documento

Os marcadores são mantidos na coleção OutlineItemCollection do objeto Document, que está na coleção OutlineCollection. No entanto, podemos ter um requisito para que todos os marcadores sejam expandidos ao visualizar o arquivo PDF.

Para cumprir esse requisito, podemos definir o status de abertura para cada item de contorno/marcador como Aberto. O trecho de código a seguir mostra como definir o status de abertura para cada marcador como expandido em um documento PDF.

void ExpandedBookmarks() {

String _dataDir("C:\\Samples\\Bookmarks\\");

auto doc = MakeObject<Document>(_dataDir + u"UpdateBookmarks.pdf");

// definir modo de visualização de página, ou seja, mostrar miniaturas, tela cheia, mostrar painel de anexos

doc->set_PageMode(PageMode::UseOutlines);

// imprimir contagem total de marcadores no arquivo PDF

Console::WriteLine(doc->get_Outlines()->get_Count());

// percorrer cada item de contorno na coleção de contornos do arquivo PDF

for (int counter = 1; counter <= doc->get_Outlines()->get_Count(); counter++) {

// definir status de abertura para item de contorno

doc->get_Outlines()->idx_get(counter)->set_Open(true);

}

// salvar o arquivo PDF

doc->Save(_dataDir + u"Bookmarks_Expanded.pdf");
}