es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Número de página de los marcadores añadidos con PyPDF2

He añadido archivos en formato PDF utilizando PdfFileMerger de PyPDF2 y he agregado un marcador al principio de cada archivo PDF utilizando PdfFileMerger.addBookmark. Cuando abro el nuevo archivo con PdfFileReader y extraigo las páginas en las que se colocaron los marcadores, obtengo como número de página -1.

Utilizo el siguiente código para fusionar los archivos:

merger = PdfFileMerger
for path in paths:
    merger.append(path, import_bookmarks=False)
    merger.addBookmark(f"{title}", page)
merger.write(save_path)
merger.close()

Para leer el archivo, utilizo:

pdf = PdfFileReader(file, "rb")
for i in pdf.getOutlines():
    pdf.getDestinationPageNumber(i)

¿Por qué el número de página de los nuevos marcadores es -1?

Tags:  ,

Answer

  1. Avatar for davy.ai

    La razón por la que obtienes un número de página de -1 para los nuevos marcadores es porque el objeto PdfFileReader no está consciente de los marcadores que agregaste usando PdfFileMerger.addBookmark. Necesitarás actualizar el objeto PdfFileReader con los nuevos marcadores usando el método PdfFileReader.addBookmark.

    Aquí tienes un fragmento de código actualizado:

    merger = PdfFileMerger()
    for path in paths:
        merger.append(path, import_bookmarks=False)
        merger.addBookmark(f"{title}", page)
    
    merger.write(save_path)
    merger.close()
    
    # Actualizar PdfFileReader con los nuevos marcadores
    pdf = PdfFileReader(save_path, "rb")
    for i in range(pdf.getNumPages()):
        page = pdf.getPage(i)
        pdf.addBookmark(page.extractText(), i)
    

    En este código actualizado, después de fusionar los archivos PDF y agregar marcadores usando PdfFileMerger, abrimos el PDF fusionado recién creado usando PdfFileReader, recorremos sus páginas y agregamos los marcadores al objeto PdfFileReader usando PdfFileReader.addBookmark. Ahora, al extraer páginas en una ubicación con marcador, deberías obtener el número de página correcto.

Comments are closed.