我的公司多年来一直在 Windows 上使用 InDesign。当他们创建“链接”时,它们会指向网络驱动器,因此文件路径以驱动器号开头,例如“N:...”。我们最近买了 iMac,但这些链接无法使用,因为 Mac 路径不是以驱动器号开头的。
我们可以手动更新所有链接,但这几乎是不可能的,因为有成千上万个文件。此外,我们仍然有 Windows 用户,因此更改链接会导致它们在这些机器上中断。我不知道是否可以以编程方式更新链接,但即使可以,也必须将它们更改为在 PC 和 Mac 上都能正常工作的链接。
据我所知,像我们以前那样使用网络驱动器并不是明智之举,但我不确定还有其他选择。
有快速解决方法吗?如果没有,我们需要采取什么步骤来解决这个问题?
答案1
Adobe 的解决方案是让您使用 Adobe Bridge。这个问题Stack Exchange/Graphic Design 对这个问题进行了很好的讨论。
当遇到此“PC 链接”问题时,印前公司的 Mac 用户会运行以下 Applescript 来重新链接他们的文件。也许您会发现它很有用。
global foundPaths, foundPathNames
set foundPathNames to {}
set foundPaths to {}
set missedLinks to "" -- name of links not found
tell application "Adobe InDesign CS5"
activate
-- choose pic folder
set folderpath to (choose folder with prompt "Choose folder containing pictures:") as Unicode text
tell document 1
set missingLinks to every link whose status is link missing
if missingLinks is not {} then
set missingLinkNames to name of every link whose status is link missing
set linkcount to count of items of missingLinkNames
-- search for file recursively
my checkforfile(folderpath, missingLinkNames, linkcount)
set foundCount to count of items of foundPathNames
-- see if file was found, and relink if so
repeat with i from 1 to linkcount
repeat with j from 1 to foundCount
if contents of item j of foundPathNames = contents of item i of missingLinkNames then
relink item i of missingLinks to alias (item j of foundPaths)
exit repeat
else if j = foundCount then
set missedLinks to missedLinks & (item i of missingLinkNames) & ", "
end if
end repeat
end repeat
try -- in case there aren't any
update (every link whose status is link out of date)
end try
if missedLinks = "" then
display dialog "All links updated."
else
display dialog "The following links weren't found: " & return & (text 1 thru -3 of missedLinks)
end if
else
display dialog "No links missing."
end if
end tell
end tell
on checkforfile(folderpath, fileNames, n)
set theList to list folder file folderpath without invisibles
repeat with anItem in theList
set thePath to alias (folderpath & anItem) as Unicode text
if thePath ends with ":" then
set searchResult to my checkforfile(thePath, fileNames, n)
if searchResult is false then
return false
end if
else if contents of anItem is in fileNames then
set end of foundPathNames to contents of anItem
set end of foundPaths to thePath
if (count of items of foundPaths) = n then
return false
end if
end if
end repeat
return true
end checkforfile