From 758cf53f933ef87a60cd7b96aec85a776e82ef9b Mon Sep 17 00:00:00 2001 From: bvn13 Date: Sat, 11 Apr 2026 16:20:52 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE=20=D1=81=D0=BE=D0=B4=D0=B5=D1=80=D0=B6=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pdf_merge.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/pdf_merge.py b/pdf_merge.py index f3176cd..a31cf29 100755 --- a/pdf_merge.py +++ b/pdf_merge.py @@ -92,6 +92,7 @@ def merge(config_path: Path) -> None: writer = PdfWriter() total_added = 0 + bookmarks: list[tuple[str, int]] = [] # (label, 0-based page index в результате) for i, step in enumerate(steps, 1): if "file" not in step: @@ -113,10 +114,13 @@ def merge(config_path: Path) -> None: print(f"Шаг {i} ({step['file']}): {e}", file=sys.stderr) sys.exit(1) + label = step.get("label", "") + if label: + bookmarks.append((label, total_added)) + for idx in indices: writer.add_page(reader.pages[idx]) - label = step.get("label", "") label_str = f" [{label}]" if label else "" print( f" + {step['file']}{label_str}: " @@ -125,6 +129,12 @@ def merge(config_path: Path) -> None: ) total_added += len(indices) + # Добавляем закладки (содержание в боковой панели PDF-ридера) + if bookmarks: + for bm_label, page_idx in bookmarks: + writer.add_outline_item(bm_label, page_idx) + print(f"\n Содержание: {len(bookmarks)} закладок") + output_path.parent.mkdir(parents=True, exist_ok=True) with open(output_path, "wb") as out: writer.write(out)