[ID CC-CC2021] Добавление названия файла в заголовок (file info)

Serik64

Участник
Топикстартер
Сообщения
18
Реакции
1
Как сделать так, что бы в свойствах файла в заголовке было название документа?
При экспорте в пдф, раньше в "заголовок" автоматически добавлялось название файла. Это очень удобно, так как если кто-то поменяет название пдф-файла, я мог посмотреть в свойствах название оригинальной верстки. А сейчас при экспорте в пдф ничего не добавляется. Да, я могу вручную в индизайне вписать в заголовок что угодно, но хочется как раньше, что бы все автоматом добавлялось.
Это где-то в настройках включается или это больше не делается автоматически?
 

Вложения

  • Screenshot 2023-01-19 181612.png
    Screenshot 2023-01-19 181612.png
    5.8 КБ · Просм.: 97

densen

15 лет на форуме
Сообщения
753
Реакции
642
Если хочется автоматически, то сохранить нижеследующий скрипт в c:\Users\%user%\AppData\Roaming\Adobe\InDesign\%version%\en_US\Scripts\Startup Scripts\ и перезагрузить ИнДизайн. И тогда при Save или SaveAs в тег "Document Title" будет добавляться имя файла, которое будет экспортироваться в PDF.
JavaScript:
//https://community.adobe.com/t5/indesign-discussions/indesign-script-to-automatically-insert-document-title-metadata-based-on-file-name/m-p/12191253

#targetengine "session"

function saveFileMetaData() {
    if(app.layoutWindows.length == 0) return;
    else if (!app.activeDocument.saved) {
        alert('Sorry, there was a problem and the document was not saved.');
        return;
        }
   doc = app.activeDocument;
   var fileName = doc.name.replace(/.indd$/i, "");
   var myMetaData = doc.metadataPreferences;
   myMetaData.documentTitle = fileName;
}

app.addEventListener('afterSave', saveFileMetaData, false);
app.addEventListener('afterSaveAs', saveFileMetaData, false);
 
Последнее редактирование:

Serik64

Участник
Топикстартер
Сообщения
18
Реакции
1
Скрипт работает, но вместе с ним и одна неприятная штука. Теперь когда нажимаешь ctrl+s он сохраняет файл, но сверху в окне все равно остается звездочка как на несохраненных файлах. И при закрытии файла он снова спрашивает «сохранить ли изменения?». Это немного сбивает с толку. Это как-то фиксится?
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 227
Реакции
10 850
doc.saved=true;
 

densen

15 лет на форуме
Сообщения
753
Реакции
642
Это как-то фиксится?
Боюсь, что нет. Это плата за требуемую автоматику. При каждом Save и SaveAs происходит переписывание "Document Title" (потому что ведь операция может сопровождаться изменением имени, поэтому нужно успеть подставить новое имя), и переписывание тега снова изменяет файл - появляется "звездочка". Круг замыкатся.
Если достаточно будет полуавтоматического добавления, то можно использоваться одну из двух строк и запускать скрипт вручную.
JavaScript:
app.activeDocument.metadataPreferences.documentTitle = app.activeDocument.name.replace(/.indd$/i, ""); // имя файла без расширения
app.activeDocument.metadataPreferences.documentTitle = app.activeDocument.name; // имя файла с расширением indd
 
  • Спасибо
Реакции: Serik64

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 227
Реакции
10 850
А, я спутал с иллюстратором.
 

densen

15 лет на форуме
Сообщения
753
Реакции
642
А если использовать "beforeSave"?
Тогда правильное имя файла скрипт подставляет только после перед вторым сохранением, так как перед первым сохранением он пишет имя Untitled-#.
Но да, так тоже можно:
JavaScript:
//https://community.adobe.com/t5/indesign-discussions/indesign-script-to-automatically-insert-document-title-metadata-based-on-file-name/m-p/12191253

#targetengine "session"

function saveFileMetaData() {
    if(app.layoutWindows.length == 0) return;
/*    else if (!app.activeDocument.saved) {
        alert('Sorry, there was a problem and the document was not saved.');
        return;
        }*/
   doc = app.activeDocument;
   var fileName = doc.name.replace(/.indd$/i, "");
   var myMetaData = doc.metadataPreferences;
   myMetaData.documentTitle = fileName;
}

app.addEventListener('beforeSave', saveFileMetaData, false);
app.addEventListener('beforeSaveAs', saveFileMetaData, false);
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
А в pdf разве нет в xmp подробной истории происхождения?
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
проверил, действительно имени файла нет. id только
<xmpMM:OriginalDocumentID>xmp.did:aa9c77e1-0b0f-4227-a959-6cdb65f30e62</xmpMM:OriginalDocumentID>
 

densen

15 лет на форуме
Сообщения
753
Реакции
642
Тогда больше подходит "beforeExport", звездочка будет появляться только после экспорта.
Да, это лучшее решение!
JavaScript:
//https://community.adobe.com/t5/indesign-discussions/indesign-script-to-automatically-insert-document-title-metadata-based-on-file-name/m-p/12191253

#targetengine "session"

function saveFileMetaData() {
    if(app.layoutWindows.length == 0) return;
    else if (!app.activeDocument.saved) {
        alert('Sorry, there was a problem and the document was not saved.');
        return;
        }
   doc = app.activeDocument;
   //var fileName = doc.name.replace(/.indd$/i, ""); // имя файла без расширения
   var fileName = doc.name; // имя файла с расширением
   var myMetaData = doc.metadataPreferences;
   myMetaData.documentTitle = fileName;
}

app.addEventListener('beforeExport', saveFileMetaData, false);
 
Последнее редактирование: