[ID CC-CC2022] Битые текстовые поля из Ворда в Индизайне

LeonidB

Их бин
Топикстартер
10 лет на форуме
Сообщения
2 471
Реакции
1 530
Коллеги, нужен совет.

К нам иногда приходят макеты, в которых таятся битые вордовские текстовые поля (fields). При попытке вывода из Индизайна на печать этих макетов вылезает ошибка:

Сообщение при печати.jpg

Разумеется, ни в окне перекрёстных ссылок, ни в окне гиперссылок, ни в окне закладок места с такими ошибками не обозначены.
Отключать предупреждение нельзя, потому как оно необходимо в случае битых индизайновских перекрёстных ссылок.

Найти места с битыми ссылками получалось только методом дихотомии, что, естественно, не радует. При этом выглядят они как обычные, никаких особых символов вокруг текста нет, только попытка посмотреть их в редакторе материалов Индизайна показывает некие интересные значки, никаким образом не копирующиеся:
Редактор материалов.jpg

В исходном вордовском файле такое место видно только в том случае, если в настройках Ворда включена подсветка текстовых полей (text fields):
Текст в Ворде.jpg

При попытке обновить значение такого поля Ворд выдаёт ошибку:
Текст в Ворде_обновление поля1.jpg
Текст в Ворде_обновление поля2.jpg

И именно эта ошибка в Ворде вызывает ошибку печати в Индизайне, если в него был залит такой текст в режиме сохранения форматирования при импорте.
Если заливать текст в Индизайн без форматирования, то таких бяк, конечно, не будет. Также их не будет, если в исходном вордовском файле преобразовать все гиперлинки и текстовые поля в обычный текст (я это делаю макросом, обрабатывая текст для вёрстки).

Но меня сейчас интересует не то, как правильно импортировать текст, а можно ли такие места как-то найти в индизайновском документе, если текст туда УЖЕ залит и свёрстан (а к нам такие макеты и приходят, как правило от удалённых верстальщиков). Или, если и не искать каждое такое битое место, то хотя бы удалить все их скопом (не текст, конечно, а вот эти битые ссылки).

Может, кто-то знает какой-либо скриптик или хитрый способ? Или скрипт, которые выдаёт список ссылок не только такого экзотического вида, а все возможные битые ссылки в документе: перекрёстные, гипер-, закладки и т. п.?

В аттаче - idml и кусок вордовского файла с этой гадостью.
 

Вложения

Последнее редактирование:
  • Спасибо
Реакции: ~RA~
Или, если и не искать каждое такое битое место, то хотя бы удалить все их скопом (не текст, конечно, а вот эти битые ссылки).
У меня для этого есть набор команд по удалению после импорта текста всего перекрестного и ссылочного:
JavaScript:
app.activeDocument.hyperlinkExternalPageDestinations.everyItem().remove(); //A collection of hyperlink external page destinations.
app.activeDocument.hyperlinkPageDestinations.everyItem().remove(); //A collection of hyperlink page destinations.
app.activeDocument.hyperlinkPageItemSources.everyItem().remove(); //A collection of hyperlink page item sources.
app.activeDocument.hyperlinkTextDestinations.everyItem().remove(); //A collection of hyperlink text destinations.
app.activeDocument.hyperlinkTextSources.everyItem().remove(); //A collection of hyperlink text sources.
app.activeDocument.hyperlinkURLDestinations.everyItem().remove(); //A collection of hyperlink URL destinations.
app.activeDocument.hyperlinks.everyItem().remove(); //A collection of hyperlinks.
 
  • Спасибо
Реакции: boriskasmoscow и LeonidB
@densen, спасибо! Пригодится.
Попробовал - но именно такой вид битых ссылок этот скрипт, к сожалению, не удаляет.
 
Попробовал - но именно такой вид битых ссылок этот скрипт, к сожалению, не удаляет.
Да, тут посложнее дело. В интернете есть где обсуждают эту же проблему: раз, два, но, похоже, не у всех получается заставить панель перекрестных ссылок увидеть наконец эти ссылки.
Но вот здесь описано, как долго и нудно, но избавиться от этого наваждения.
Если распаковать твой idml как архив и достать файл Story_ue1.xml, то в нем можно найти такую запись:
XML:
                <CrossReferenceSource Self="uf7" AppliedFormat="ufb" Name="Источник" Hidden="false" AppliedCharacterStyle="n">
                    <Content>Гальперин В. М., Игнатьев С. М., Моргунов В. И.</Content>
                </CrossReferenceSource>
Если удалить первую и третью строку, чтобы последовательность строк выглядела следующим образом:
XML:
                <Content>Важнейшая часть ортодоксального подхода — простая модель потребительского выбора, известная из стандартных курсов микроэкономики, [</Content>
                    <Content>Гальперин В. М., Игнатьев С. М., Моргунов В. И.</Content>
                <Content> 1998; Вэриан Х., 1997]. Для этой модели характерны, в частности, следующие предпосылки.</Content>
то заменив в архиве старый файл Story_ue1.xml на измененный, обратно переименовав архив в idml и открыть, то "бяка" пропадает:
idml.png

Понятно, что вручную исправлять всё это нереально. Но с помощью дополнительной программы, способной к поиску\замене регулярных выражений должно помочь.
 
Последнее редактирование:
  • Спасибо
Реакции: LeonidB
Черт, это же всё так просто оказалось! Я что, самый умный?? :o|
JavaScript:
app.activeDocument.crossReferenceSources.everyItem().remove(); //A collection of CrossReferenceSources
 
@densen, спасибо!
Всё отлично работает! Ты не самый умный, ты — гений!