Obter, Atualizar e Expandir um Marcador
Obter Marcadores
A coleção OutlineCollection do objeto Document contém todos os marcadores de um arquivo PDF. Este artigo explica como obter marcadores de um arquivo PDF e como obter em qual página um marcador específico está.
Para obter os marcadores, percorra a coleção OutlineCollection e obtenha cada marcador na OutlineItemCollection. The OutlineItemCollection fornece acesso a todos os atributos do marcador. O trecho de código a seguir mostra como obter marcadores do arquivo PDF.
public static void GettingBookmarks() {
// Abrir documento
Document pdfDocument = new Document(GetDataDir() + "UpdateBookmarks.pdf");
// Percorrer todos os marcadores
for (OutlineItemCollection outlineItem : (Iterable<OutlineItemCollection>) pdfDocument.getOutlines()) {
System.out.println("Título :- " + outlineItem.getTitle());
System.out.println("É Itálico :- " + outlineItem.getItalic());
System.out.println("É Negrito :- " + outlineItem.getBold());
System.out.println("Cor :- " + outlineItem.getColor());
}
}
Obtendo o Número da Página de um Marcador
Uma vez que você tenha adicionado um marcador, você pode descobrir em qual página ele está obtendo o PageNumber de destino associado ao objeto Bookmark.
public static void GettingBookmarksPageNumber() {
// Criar PdfBookmarkEditor
PdfBookmarkEditor bookmarkEditor = new PdfBookmarkEditor();
// Abrir arquivo PDF
bookmarkEditor.bindPdf(GetDataDir() + "UpdateBookmarks.pdf");
// Extrair marcadores
Bookmarks bookmarks = bookmarkEditor.extractBookmarks();
for (Bookmark bookmark : (Iterable<Bookmark>) bookmarks) {
String strLevelSeprator = "";
for (int i = 1; i < bookmark.getLevel(); i++) {
strLevelSeprator += "---- ";
}
System.out.println("Título :- " + strLevelSeprator + bookmark.getTitle());
System.out.println("Número da Página :- " + strLevelSeprator + bookmark.getPageNumber());
System.out.println("Ação da Página :- " + strLevelSeprator + bookmark.getAction());
}
}
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 seguintes trechos de código mostram como atualizar favoritos em um documento PDF.
public static void UpdateBookmarksInPDFDocument() {
// Abrir documento
Document pdfDocument = new Document(GetDataDir() + "UpdateBookmarks.pdf");
// Obter um objeto de favorito
OutlineItemCollection pdfOutline = pdfDocument.getOutlines().get_Item(1);
// Atualizar o objeto de favorito
pdfOutline.setTitle("Outline Atualizado");
pdfOutline.setItalic(true);
pdfOutline.setBold(true);
// Definir a página de destino como 2
pdfOutline.setDestination(new GoToAction(pdfDocument.getPages().get_Item(2)));
// Salvar saída
pdfDocument.save(GetDataDir() + "Bookmarkupdated_output.pdf");
}
Atualizar Favoritos Filhos em um Documento PDF
Para atualizar um favorito filho:
- Recupere o favorito filho que você deseja atualizar do arquivo PDF, primeiro obtendo o favorito pai e, em seguida, o favorito filho usando os valores de índice apropriados.
- Salve o arquivo PDF atualizado usando o método Save.
O seguinte trecho de código mostra como atualizar favoritos filhos em um documento PDF.
public static void UpdateChildBookmarksInPDFDocument() {
// Abrir documento
Document pdfDocument = new Document(GetDataDir() + "UpdateBookmarks.pdf");
// Obter um objeto de favorito
OutlineItemCollection pdfOutline = pdfDocument.getOutlines().get_Item(1);
// Obter objeto de favorito filho
OutlineItemCollection childOutline = pdfOutline.get_Item(1);
// Atualizar o objeto de favorito
childOutline.setTitle("Updated Outline");
childOutline.setItalic(true);
childOutline.setBold(true);
// Definir a página de destino como 2
childOutline.setDestination(new GoToAction(pdfDocument.getPages().get_Item(2)));
// Salvar saída
pdfDocument.save(GetDataDir() + "Bookmarkupdated_output.pdf");
}
Favoritos Expandidos ao visualizar o documento
Os favoritos estão contidos na coleção OutlineItemCollection do objeto Documento, que por sua vez está na coleção OutlineCollection. No entanto, podemos ter a necessidade de ter todos os favoritos expandidos ao visualizar o arquivo PDF.
Para cumprir esse requisito, podemos definir o status de abertura para cada item de contorno/favorito como Aberto. O seguinte trecho de código mostra como definir o status de abertura para cada favorito como expandido em um documento PDF.
public static void ExpandedBookmarks() {
Document doc = new Document(GetDataDir()+"UpdateBookmarks.pdf");
// definir modo de visualização da página, ou seja, mostrar miniaturas, tela cheia, mostrar painel de anexos
doc.setPageMode(PageMode.UseOutlines);
// imprimir contagem total de Favoritos no arquivo PDF
System.out.println(doc.getOutlines().size());
// percorrer cada item de contorno na coleção de contornos do arquivo PDF
for (int counter = 1; counter <= doc.getOutlines().size(); counter++) {
// definir status de abertura para item de contorno
doc.getOutlines().get_Item(counter).setOpen(true);
}
// salvar o arquivo PDF
doc.save(_dataDir+"Bookmarks_Expanded.pdf");
}