eptm_dashboard/.venv/lib/python3.12/site-packages/pypdfium2_cli/toc.py

46 lines
1.3 KiB
Python

# SPDX-FileCopyrightText: 2026 geisserml <geisserml@gmail.com>
# SPDX-License-Identifier: Apache-2.0 OR BSD-3-Clause
import pypdfium2.internal as pdfium_i
from pypdfium2_cli._parsers import (
add_input,
add_n_digits,
get_input,
round_list,
)
def attach(parser):
add_input(parser, pages=False)
add_n_digits(parser)
parser.add_argument(
"--max-depth",
type = int,
default = 15,
help = "Maximum recursion depth to consider when parsing the table of contents",
)
def main(args):
pdf = get_input(args)
toc = pdf.get_toc(max_depth=args.max_depth)
for bm in toc:
count, dest = bm.get_count(), bm.get_dest()
out = " " * bm.level
out += "[%s] %s -> " % (
f"{count:+}" if count != 0 else "*",
bm.get_title(),
)
# distinguish between "dest == None" and "dest with unknown mode" while keeping the output machine readable
if dest:
index, (view_mode, view_pos) = dest.get_index(), dest.get_view()
out += "%s # %s %s" % (
index+1 if index != None else "?",
pdfium_i.ViewmodeToStr.get(view_mode),
round_list(view_pos, args.n_digits),
)
else:
out += "_"
print(out)