PyPDF2 - гиперссылки на другие страницы, отсутствующие после слияния - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть три файла PDF.

  1. Сгенерировано с помощью Microsoft Word
  2. Сгенерировано из HTML с оглавлением, ссылающимся на несколько разделов (изначально MD преобразован в HTML с Pando c, преобразованным в PDF с помощью набора инструментов wkhtmltopdf)
  3. Сгенерировано с помощью Microsoft Word

2-й PDF отлично работает перед объединением всех вместе, но с использованием PyPDF2, гиперссылки связывают на другие страницы (в оглавлении) больше не работают.

Однако все другие гиперссылки, ссылающиеся на внешний URL, работают после слияния.

Мой код

import pathlib
import os
from PyPDF2 import PdfFileMerger
workdir = pathlib.Path(__file__).parent.absolute()
workdir = f"{workdir}"
workdir.replace(os.sep, '/')

with open(f'{workdir}/../config.py', 'r', encoding='utf-8') as inf:
    config = eval(inf.read())

temp_dir = f"{workdir}/../temp"
cover_dir = f"{workdir}/../cover"

cover_name_pdf = "cover_page.pdf"
back_cover_name_pdf = "back_cover_page.pdf"
book_name_pdf = "temp_book.pdf"
final_book = f"{workdir}/../book.pdf"

pdfs = []

# Add front cover page
if not config['disable-cover-page']:
    pdfs.append(f'{cover_dir}/{cover_name_pdf}')

# Add book pdf pages from md
pdfs.append(f'{temp_dir}/{book_name_pdf}')

# Add back cover page
if not config['disable-back-cover-page']:
    pdfs.append(f'{cover_dir}/{back_cover_name_pdf}')

# Combine pdfs
merger = PdfFileMerger()
for pdf in pdfs:
    merger.append(pdf)

# Delete previous result book
if os.path.exists(final_book):
    os.remove(final_book)

merger.write(final_book)
merger.close()

Что-то не так с кодом, например, я пропустил настройку, или PyPDF не принимает гиперссылки на другие страницы?

...