Скрипт Preflight
Перед передачей файлов в типографию необходимо убедиться в отсутствии в работе косяков, которые могут обернуться не только потраченными нервами и временем, но и деньгами из собственного кармана. Выполнить Preflight-контроль вам поможет скрипт, написанный Евгением Каревым.
В процессе работы скрипта контролируются:
1. Наличие RGB-графики в документе.
2. Наличие графики с низким разрешением (<240 dpi).
3. Наличие непропорционально масштабированной графики.
4. Переполнение текстовых фреймов (Overset Text).
Если о наличии RGB-графики мы можем узнать и штатными средствами Preflight, то о существовании в документе непропорционального масштабирования и графики с низким разрешением InDesign CS3 умалчивает. Нет в Индизайне и штатного средства контроля вытесненного текста.
Наличие такого вида проверок и есть главное достоинство скрипта.
После окончания работы скрипт по вашему желанию может вывести отчет в файл.
with(app){
myDoc = activeDocument
mySearchL = myDoc.allGraphics.length
myIm = myDoc.allGraphics
myMinRes = 240
textRGB = «»
countRGB = 0
textRes = «»
countRes = 0
textDis = «»
countDis = 0
countOver = 0
textOver = «»
for (count = 0;count<mySearchL;count++){
//rgb
if (myIm[count].constructor.name == «Image»&&myIm[count].space ==»RGB»){
owner = myIm[count].parent
countRGB = countRGB +1
while((owner.constructor.name != «Page»)&&(owner.constructor.name != «Spread»)){
owner = owner.parent}
if (owner.constructor.name == «Page»){textRGB =textRGB+»\n»+»>>> Page («+owner.name+»); file name: «+myIm[count].itemLink.name}
else{ textRGB = textRGB+»\n»+»>>> Page (PB)»+»; file name: «+myIm[count].itemLink.name}}
//Low resolution images
try{
myResW = myIm[count].effectivePpi[0]
myResH = myIm[count].effectivePpi[1]
if (myIm[count].constructor.name == «Image»){
if (myResW<myMinRes||myResH<myMinRes){
owner = myIm[count].parent
countRes = countRes +1
while((owner.constructor.name != «Page»)&&(owner.constructor.name != «Spread»)){
owner = owner.parent}
if (owner.constructor.name == «Page»){textRes =textRes+»\n»+»>>> Page («+owner.name+»); file name: «+myIm[count].itemLink.name+ » («+myResW+»x»+myResH+»)»}
else{ textRes = textRes+»\n»+»>>>Page (PB)»+»; file name: «+myIm[count].itemLink.name+ » («+myResW+»x»+myResH+»)»}}}
}catch (e){}
//Disproportionate images
myW = myIm[count].horizontalScale.toPrecision(3)
myH = myIm[count].verticalScale.toPrecision(3)
if (myIm[count].constructor.name == «Image»){
if (myW!=myH){
owner = myIm[count].parent
countDis = countDis +1
while((owner.constructor.name != «Page»)&&(owner.constructor.name != «Spread»)){
owner = owner.parent}
if (owner.constructor.name == «Page»){textDis =textDis+»\n»+»>>> Page («+owner.name+»); file name: «+myIm[count].itemLink.name}
else{ textDis = textDis+»\n»+»>>> Page (PB)»+»; file name: «+myIm[count].itemLink.name}}}}
//overflow
myStory = myDoc.stories
Len = myStory.length
for (a=0;a<Len;a++){
totLine = myStory.item(a).lines.length
lineLen = 0
myTxtFr = myStory.item(a).textContainers
for (t=0;t<myTxtFr.length;t++){
myTxt=myTxtFr[t]
if (myTxt.overflows==true){
myString = myTxt.lines.item(0).contents
owner = myTxt.parent
countOver = countOver +1
while((owner.constructor.name != «Page»)&&(owner.constructor.name != «Spread»)){
owner = owner.parent
}
if (owner.constructor.name == «Page»){textOver =textOver+»\n»+»>>> Page («+owner.name+»); «+myString+»\n……..»}
else{ textOver = textOver+»\n»+»>>> Page (PB)»+»; «+myString+»\n……..»}}}}
textTotalRGB = «\nRGB Images: «+countRGB+» item(s)»+»\n———————»
textTotalRes = «\nLow resolution images: «+countRes+» item(s)»+»\n———————»
textTotalDis = «\nDisproportionate images: «+countDis+» item(s)»+»\n———————»
textTotalOver = «\nOverset text: «+countOver+» item(s)»+»\n———————»
reportText = «Document: «+myDoc.name + «\n———————«+»\nRGB Images: «+»(«+countRGB+»)»+textRGB+»\n———————«+
«\nLow resolution images: «+»(«+countRes+»)»+textRes+»\n———————«+
«\nDisproportionate images: «+»(«+countDis+»)»+textDis+»\n———————«+
«\nOverset text: «+»(«+countOver+»)»+textOver
result = confirm («Document: «+myDoc.name + textTotalRGB+textTotalRes+textTotalDis+textTotalOver+»\n\nCREATE REPORT?»+»\n\n\n jvk * 2007 | karev_e@mail.ru»)}
if(result == false){exit()}
pH = myDoc.documentPreferences.pageHeight
pW = myDoc.documentPreferences.pageWidth
lM = myDoc.pages.item(0).marginPreferences.left
rM = myDoc.pages.item(0).marginPreferences.right
tM = myDoc.pages.item(0).marginPreferences.top
bM = myDoc.pages.item(0).marginPreferences.bottom
myRepDoc=app.documents.add()
with(myRepDoc.documentPreferences){
var pageHeight = pH;
var pageWidth = pW;
var facingPage = false;
var pagesPerDocument = 1;
var pageOrientation = PageOrientation.portrait}
with(myRepDoc.pages.item(0).marginPreferences){
var columnCount = 1;
var columnGutter = «4»;
var bottom = bM;
var left = lM;
var right = rM;
var top = tM;}
w = pW -(lM+rM)
h = pH -(tM+bM)
myTF = myRepDoc.pages.item(0).textFrames.add()
with(myTF){
var geometricBounds = [tM, lM, tM+h,lM+w];
myTF.textFramePreferences.textColumnCount = 2
myTF.textFramePreferences.textColumnGutter = 4
insertionPoints.item(0).contents =reportText
paragraphs.item(0).pointSize = 7}
with (app){
app.findTextPreferences = NothingEnum.nothing;
app.changeTextPreferences = NothingEnum.nothing;
findTextPreferences.findWhat = «>>> Page»;
changeTextPreferences.fontStyle = «Bold»
myRepDoc.changeText()
}
Спасибо за скрипт. Хочу закрутить его в скрипт вывода PDF-файлов для предпечатной проверки. Есть одно «но». скрипт реагирует также на объекты, находящиеся за полями страницы, а там нередко бывает много мусора: и оверсетов и RGB. мы используем редакционную систему и работам с множеством одностраничных файлов и уследить за мусором не просто. Подскажите, как ограничить работу скрипта только страницей.
Посмотрите здесь: http://blog.adobescripts.info/?p=110
Почему-то скрипт не работает. Выдает сообщение:
error number 8
error string: syntax error
line: 6
source: textRGB=«»
Offending text: «
Windows XP, Indesign CS3
2 metrov
Все кавычки в коде поменять с елочек (« ») на лапки (‘ ‘)