Obter, atualizar e expandir marcadores de PDF em Python
Obter Marcadores
O Document object’s OutlineCollection A coleção contém todos os marcadores de um arquivo PDF. Este artigo explica como obter marcadores de um arquivo PDF e como descobrir em qual página um marcador específico está.
Para obter os marcadores, percorra o OutlineCollection coleção e obtenha cada marcador na OutlineItemCollection. O OutlineItemCollection fornece acesso a todos os atributos do marcador. O trecho de código a seguir mostra como obter marcadores do arquivo PDF.
from os import path
import sys
import aspose.pdf as ap
def get_bookmarks(input_pdf):
document = ap.Document(input_pdf)
for i in range(len(document.outlines)):
outline_item = document.outlines[i + 1]
print(outline_item.title)
print(outline_item.italic)
print(outline_item.bold)
print(outline_item.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 PageNumber de destino associado ao objeto Bookmark.
from os import path
import sys
import aspose.pdf as ap
def get_bookmark_page_number(input_pdf):
# Create PdfBookmarkEditor
bookmark_editor = ap.facades.PdfBookmarkEditor()
# Open PDF file
bookmark_editor.bind_pdf(input_pdf)
# Extract bookmarks
bookmarks = bookmark_editor.extract_bookmarks()
for bookmark in bookmarks:
str_level_separator = ""
for i in range(bookmark.level):
str_level_separator += "----"
print(str_level_separator, "Title:", bookmark.title)
print(str_level_separator, "Page Number:", bookmark.page_number)
print(str_level_separator, "Page Action:", bookmark.action)
Obter marcadores filhos de um documento PDF
Os marcadores podem ser organizados em uma estrutura hierárquica, com pais e filhos. Para obter todos os marcadores, percorra as coleções Outlines do objeto Document. No entanto, para obter também os marcadores filhos, percorra também todos os marcadores em cada OutlineItemCollection objeto obtido no primeiro loop. Os trechos de código a seguir mostram como obter marcadores filhos de um documento PDF.
from os import path
import sys
import aspose.pdf as ap
def get_child_bookmarks(input_pdf):
document = ap.Document(input_pdf)
for i in range(len(document.outlines)):
outline_item = document.outlines[i + 1]
print(outline_item.title)
print(outline_item.italic)
print(outline_item.bold)
print(outline_item.color)
count = len(outline_item)
if count > 0:
print("Child Bookmarks")
# There are child bookmarks then loop through that as well
for j in range(len(outline_item)):
child_outline_item = outline_item[j + 1]
print(child_outline_item.title)
print(child_outline_item.italic)
print(child_outline_item.bold)
print(child_outline_item.color)
Atualizar Marcadores em um Documento PDF
Para atualizar um marcador em um arquivo PDF, primeiro, obtenha o marcador específico da coleção OutlineColletion do objeto Document especificando o índice do marcador. OutlineItemCollection objeto, você pode atualizar suas propriedades e então salvar o arquivo PDF atualizado usando o método Save. Os trechos de código a seguir mostram como atualizar marcadores em um documento PDF.
from os import path
import sys
import aspose.pdf as ap
def update_bookmarks(input_pdf, output_pdf):
# Open document
document = ap.Document(input_pdf)
# Get a bookmark object
outline = document.outlines[1]
# Get child bookmark object
child_outline = outline[1]
child_outline.title = "Updated Outline"
child_outline.italic = True
child_outline.bold = True
# Save output
document.save(output_pdf)
Marcadores expandidos ao visualizar o documento
Os marcadores são mantidos no objeto Document\u0027s OutlineItemCollection coleção, ela mesma no OutlineCollection coleção. No entanto, podemos ter um requisito de que todos os marcadores estejam expandidos ao visualizar o arquivo PDF.
Para atender a esse requisito, podemos definir o status aberto para cada item de contorno/marcador como Aberto. O trecho de código a seguir mostra como definir o status aberto para cada marcador como expandido em um documento PDF.
from os import path
import sys
import aspose.pdf as ap
def expanded_bookmarks(input_pdf, output_pdf):
document = ap.Document(input_pdf)
document.page_mode = ap.PageMode.USE_OUTLINES
for i in range(len(document.outlines)):
item = document.outlines[i + 1]
item.open = True
document.save(output_pdf)