Hallo Martin,
hallo liebe Skripter,
hier mal das angepasste Skript in dem nun bei Übersatztext die Fundstelle angezeigt wird und bei einer fehlenden oder zu aktualisierenden Verknüpfung eine Fehlermeldung gezeigt wird.
Es gibt noch zwei Dinge die ich bisher nicht lösen konnte.
1) Wenn Übersatztext in einer Tabellenzelle ist, kommt hier nur eine Warnmeldung, wird aber nicht angezeigt wo. Richtig oder besser wäre es, wenn das wie bei normalem Übersatztext angezeigt würde.
2) Das Skript läuft nach der Anzeige der Fehlermeldungen weiter und exportiert das PDF trotzdem. Hier sollte es eigentlich stoppen.
Code // Modul210.jsx // Original "doc2pdf" von Martin Fischer // // Funktion zum prüfen ob Üersatztext vorhanden ist if (app.documents.length > 0) { app.select(null); var myDoc = app.documents[0]; var myStories = myDoc.stories; var scount = myStories.length; for (myCounter=0; scount>myCounter; myCounter++) { if (myStories[myCounter].textContainers[myStories[myCounter].textContainers.length-1].overflows) { var myFrame = myStories[myCounter].textContainers[myStories[myCounter].textContainers.length-1]; var myPage = myFrame.parent; // what if parent is not a page (e.g., inline frame) var endMessage = "No other overset text found in document."; try { while (myPage.constructor.name != "Page") { if (myPage.parentTextFrame == undefined) { var myPage = myPage.parent; } else { myPage = myPage.parentTextFrame; } } app.activeWindow.activeSpread = myPage.parent; selectIt(myStories[myCounter].textContainers[myStories[myCounter].textContainers.length-1]); var theMessage = "Overset text frame found. Ignore and look for others?"; } catch (e) { theMessage = "Deeply overset frame found; can't be selected. Ignore and look for others?" //+ myPage.pages[0].name; selectIt(myStories[myCounter].textContainers[myStories[myCounter].textContainers.length-1]); exit(); } if (confirm(theMessage)) { continue; } else { exit(); } } } for (myCounter=0; scount>myCounter; myCounter++) { var myTables = myStories[myCounter].tables; var tcount = myTables.length; if (tcount != 0) { for (j=0; tcount>j; j++) { var myCells = myTables[j].cells; var ccount = myCells.length; for (k=0; ccount>k; k++) { if (myCells[k].overflows) { // Found one; find page it's on var endMessage = "No other overset text found in document." try { var myCellNos = [k,k-1,k+1]; for (x = 0; myCellNos.length > x; x++) { try { var myPage = myCells[myCellNos[x]].texts[0].parentTextFrames[0].parent; break; } catch (e) { if (x = myCellNos.length) {throw "Blast!"} } } // what if parent is not a page (e.g., inline frame) while (myPage.constructor.name != "Page") { if (myPage.parentTextFrames[0] == undefined) { var myPage = myPage.parent; } else { var myPage = myPage.parentTextFrames[0].parent; } } app.activeWindow.activeSpread = myPage.parent; selectIt(myCells[k]); var theMessage = "Overset cell found. Ignore and look for others?" } catch (e) { var theMessage = "Übersatztext in Tabellenzelle gefunden.\rBitte mit Preflight suchen!" + myTables[j].parent.parent.name; } if (alert(theMessage)) { continue; } } } } } } } else { alert("This script operates on the active document; please open one and try again.") } function selectIt(theObj) { // Selects object, turns to page and zooms in on it app.select(theObj,SelectionOptions.replaceWith); app.activeWindow.zoomPercentage = 150; // Zoom auf 150% //app.activeWindow.zoom(ZoomOptions.fitPage); // Zoom auf Seite } // Prüfung auf fehlende Verknüpfungen + Fehlermeldung var not_normal_link_found = look4not_normal_link(app.documents.firstItem()); if (not_normal_link_found) alert('Achtung!\nBitte die Veknüpfungen überprüfen!'); function look4not_normal_link(doc) { var _found = false, i = 0; for (i = 0; i < doc.links.length; i++) if (doc.links.item(i).status != LinkStatus.NORMAL && doc.links.item(i).status != LinkStatus.LINK_EMBEDDED) { _found = true; break; } return _found; } // Funktion zur Erstellung des PDF var myPresets = ["Internet PDF"]; var myDoc = app.documents.firstItem(); var myFilePath = (myDoc.saved == false) ? myDoc.filePath : '~/Desktop'; for (onePreset=0; onePreset < myPresets.length; onePreset++){ var pdfFile = new File( myFilePath +'/' + cut_suffix(myDoc.name ) + '.pdf' ) try{ myDoc.asynchronousExportFile(ExportFormat.PDF_TYPE, pdfFile, false, myPresets[onePreset]); } catch(e){ alert("Error\nIst das Vorgabeset \"" + myPresets[onePreset] + "\" tatsächlich vorhanden?") }; } // Funktion zum Abtrennen der Dateiendung function cut_suffix (oneFile) { return oneFile.replace(/.indd$/i, '') ; } // Funktion zum Einlesen der PDF-Vorgabesets function myGetPDFPresets(){ var myPDFPresets = new Array; for(var onePreset = 0; onePreset < app.pdfExportPresets.length; onePreset++){ myPDFPresets.push(app.pdfExportPresets.item(onePreset).name); } return myPDFPresets; } // Funktion zum Ersetzen von (hinsichtlich des Dateisystems) problematischen // Zeichen im Namen eines Vorgabesets (Slash, Backslash, Doppelpunkt) function myCleanFileName(oneFilename){ var oneFilename = String(oneFilename.split('/').join('_').split('\\').join('_').split(':').join('¯')); return oneFilename; } Hat da jemand ne Lösung parat?
Grüße
Stefan
Grüße
Stefan