Сообщение Acrobat "Этот файл уже открыт"

Это действительно странно. У нашей компании есть сценарий InDesign, который в конце вызывает Acrobat (посредством Applescript), чтобы открыть файл PDF, заменить страницу в нем, затем сохранить файл и закрыть его. Мы используем этот сценарий уже более полутора лет, без проблем на 8 из 9 компьютеров, которые у нас есть. Последний, однако, дает мне странное сообщение, когда пытается открыть и сохранить файл.

Чтобы быть понятным, все 9 компьютеров являются Mac, все работают под управлением OS X 10.9.5 Mavericks. Сценарий находится на центральном сервере, поэтому все они используют один и тот же файл:

var unlockCover2014 = app.trustedFunction(function (fName, fPrefix)
{
    app.beginPriv();
    var folderPrefix = fName.match(/^.*?(?=JOBS)/);
    console.println("fName is " + fName);
    console.println("folderPrefix is " + folderPrefix);
    var myDoc = app.openDoc(folderPrefix + "Product Templates/ProofCoverNew/proof_cover_2014.pdf");
    myDoc.replacePages(0, fName, 0, 0);
    myDoc.saveAs(fName);
    myDoc.closeDoc(true);
    app.endPriv();
});

Этот файл хранится в правильной папке, чтобы быть сценарием уровня папки. 8 компьютеров работают через это без каких-либо проблем. Девятый, однако, помещает это в консоль Javascript Acrobat:

fName is /ArtDept/ArtDept/JOBS/425000-425999/425000 Folder/425000_cover.pdf
folderPrefix is /ArtDept/ArtDept/

RaiseError: This file is already open.
Doc.saveAs:9:
 ===> This file is already open.

Я не понимаю, почему этот компьютер сам думает, что PDF-файлы уже открыты. Проблема, которая возникает из-за этого, состоит в том, что, когда основной скрипт InDesign выполнен, два документа все еще открыты в Acrobat, и тот, который он должен сохранить, не сохраняется.

Есть идеи о том, что здесь происходит?

2 ответа

Решение

Я наконец обнаружил, в чем проблема. Я чувствую себя немного глупо из-за того, насколько (почти) это очевидно, но, возможно, это может помочь другим в моей ситуации.

Я отключил строку в основном скрипте InDesign, который вызывал Acrobat, полагая, что я вернусь к этой проблеме позже, когда рассмотрю некоторые другие проблемы. Когда я сделал это и снова запустил основной сценарий, я обнаружил, что Acrobat фактически уже открывает копию этого титульного листа PDF во время выполнения основного сценария! Сначала я был в шоке, но потом занялся хеддеском, когда быстро понял причину:

InDesign на этом компьютере по умолчанию настроен на автоматическое открытие PDF-файла после его экспорта.

Итак, я просто добавил короткую строку в часть своего кода, которая устанавливает настройки экспорта PDF, чтобы отключить эту функцию:

with (app.pdfExportPreferences)
{
    pageRange = proofRange;
    if (multiColor) pageRange = colorTable.toString();
    useSecurity = true;
    disallowChanging = true;
    disallowCopying = false;
    disallowDocumentAssembly = true;
    disallowExtractionForAccessibility = false;
    disallowFormFillIn = true;
    disallowHiResPrinting = false;
    disallowNotes = true;
    disallowPlaintextMetadata = true;
    disallowPrinting = false;
    changeSecurityPassword = "(NOPE)";
    viewPDF = false;
}

Это viewPDF линия в конце. (Извините, я не думаю, что смогу выделить это уценкой.) Я чувствую себя глупо, что упустил из виду такую ​​почти очевидную причину, но я надеюсь, что это может помочь кому-то еще, кто сталкивается с подобной проблемой. Спасибо за попытку помочь, @Loic.

Возможно ли, что скрипт Acrobat запускается, когда InDesign еще не полностью прекратил запись файла PDF, если мы говорим именно об этом? Или, может быть, есть некоторые сетевые задержки, которые делают файл недоступным в данный момент.

Я бы посоветовал использовать задержку для проверки этой теории.

delay 3

С другой стороны, зачем вам нужно заменить файл. Я имею в виду, нельзя ли думать об этом только в области сценариев InDesign? Просто любопытно.

Другие вопросы по тегам