InDesign? Fix Bookmarks Names

Bug dotyczy InDesigna? CS2 i być może późniejszych (nie używałem nowszych wersji i nie wiem czy to poprawiono). Problem polega na tym, że kiedy wielokrotnie edytujemy, dodajemy i usuwamy zakładki program nadaje ich miejscom docelowym automatyczne nazwy typu „Bookmark 12” (z kolejnymi numerami). Te numery mogą się z czasem powtórzyć, a wtedy mamy dwie zakładki wskazujące na cele o różnych „id”, ale o takiej samej nazwie. Przy eksporcie do pliku PDF program korzysta z nazwy celu zakładki, a nie z jego unikalnego identyfikatora, więc w PDF-ie zakładki wskazują w nieprawidłowe miejsca. Aby to poprawić, wystarcza nadać celom zakładek unikalne nazwy. Poniższy skrypt wyszukuje wszystkie cele o nazwach zaczynających się od „Bookmark ” i zmienia ich nazwy na tekst „Zakładka ” + tekst wygenerowany z unikalnego „id” zakładki.

Skrypt korzysta z instalacji języka Python i dodatków umożliwiających pisanie programów korzystających z COM opisanej na stronie DTP i Python.

# Kiedy w dokumencie wielokrotnie dodajemy i usuwamy zakładki
# wtedy nazwy niektórych z nich się dublują, co powoduje błędne
# generowanie zakładek w dokumentach pdf. Aby to poprawić,
# zmieniam nazwy problematycznych zakładek na takie, które
# zawierają unikalne id zakładki.

import win32com.client

myInDesign = win32com.client.Dispatch("InDesign.Application")

doc = myInDesign.ActiveDocument

for b in doc.hyperlinkPageDestinations:
   print str(b.id) + "     " + b.name
   if b.name.startswith("Bookmark"):
       try:
           b.name = "Zakladka " + str(b.id)
           print "zmieniono na: " + b.name
       except AttributeError:
           print "Attribute error"

© Piotr Chamera, 2001–2016