Obtener, Actualizar y Expandir un Marcador usando Python
Obtener Marcadores
La colección OutlineCollection del objeto Document contiene todos los marcadores de un archivo PDF. Este artículo explica cómo obtener marcadores de un archivo PDF y cómo determinar en qué página se encuentra un marcador en particular.
Para obtener los marcadores, recorre la colección OutlineCollection y obtén cada marcador en la OutlineItemCollection. La OutlineItemCollection proporciona acceso a todos los atributos del marcador. El siguiente fragmento de código muestra cómo obtener marcadores del archivo PDF.
import aspose.pdf as ap
# Abrir documento
document = ap.Document(input_pdf)
# Recorrer todos los marcadores
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)
Obtener el Número de Página de un Marcador
Una vez que hayas añadido un marcador, puedes averiguar en qué página se encuentra obteniendo el número de página de destino asociado con el objeto Bookmark.
import aspose.pdf as ap
# Crear PdfBookmarkEditor
bookmarkEditor = ap.facades.PdfBookmarkEditor()
# Abrir archivo PDF
bookmarkEditor.bind_pdf(input_pdf)
# Extraer marcadores
bookmarks = bookmarkEditor.extract_bookmarks()
for bookmark in bookmarks:
str_level_seprator = ""
for i in range(bookmark.level):
str_level_seprator += "----"
print(str_level_seprator, "Título:", bookmark.title)
print(str_level_seprator, "Número de Página:", bookmark.page_number)
print(str_level_seprator, "Acción de Página:", bookmark.action)
Obtener Submarcadores de un Documento PDF
Los marcadores pueden organizarse en una estructura jerárquica, con padres e hijos. Para obtener todos los marcadores, recorra los colecciones de Outlines del objeto Document. Sin embargo, para obtener también los marcadores secundarios, recorra todos los marcadores en cada objeto OutlineItemCollection obtenido en el primer ciclo. Los siguientes fragmentos de código muestran cómo obtener marcadores secundarios de un documento PDF.
import aspose.pdf as ap
# Abrir documento
document = ap.Document(input_pdf)
# Recorrer todos los marcadores
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("Marcadores secundarios")
# Hay marcadores secundarios, entonces recorrer también
for j in range(len(outline_item)):
child_outline_item = outline_item[i + 1]
print(child_outline_item.title)
print(child_outline_item.italic)
print(child_outline_item.bold)
print(child_outline_item.color)
Actualizar Marcadores en un Documento PDF
Para actualizar un marcador en un archivo PDF, primero, obtén el marcador particular de la colección OutlineColletion del objeto Document especificando el índice del marcador. Una vez que hayas recuperado el marcador en el objeto OutlineItemCollection, puedes actualizar sus propiedades y luego guardar el archivo PDF actualizado usando el método Save. Los siguientes fragmentos de código muestran cómo actualizar marcadores en un documento PDF.
import aspose.pdf as ap
# Abrir documento
document = ap.Document(input_pdf)
# Obtener un objeto de marcador
outline = document.outlines[1]
# Obtener objeto de marcador hijo
child_outline = outline[1]
child_outline.title = "Outline Actualizado"
child_outline.italic = True
child_outline.bold = True
# Guardar salida
document.save(output_pdf)
Marcadores Expandidos al ver el documento
Los marcadores se mantienen en la colección OutlineItemCollection del objeto Document, a su vez en la colección OutlineCollection. Sin embargo, es posible que tengamos un requisito de tener todos los marcadores expandidos al ver el archivo PDF.
Para cumplir con este requisito, podemos establecer el estado abierto para cada elemento de esquema/marcador como Abierto. El siguiente fragmento de código le muestra cómo establecer el estado abierto para cada marcador como expandido en un documento PDF.
import aspose.pdf as ap
# Abrir documento
document = ap.Document(input_pdf)
# Establecer modo de vista de página, es decir, mostrar miniaturas, pantalla completa, mostrar panel de adjuntos
document.page_mode = ap.PageMode.USE_OUTLINES
# Recorrer cada elemento de esquema en la colección de esquemas del archivo PDF
for i in range(len(document.outlines)):
item = document.outlines[i + 1]
# Establecer estado abierto para el elemento de esquema
item.open = True
# Guardar salida
document.save(output_pdf)