Connect failed: Connection timed out

[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt PDF-Export mit Fehlermeldung bei Übersatztext, fehlenden Verknüpfungen, etc

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

PDF-Export mit Fehlermeldung bei Übersatztext, fehlenden Verknüpfungen, etc

ToniMontanaa
Beiträge gesamt: 426

5. Mär 2014, 11:18
Beitrag # 1 von 6
Bewertung:
(4318 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

ich nutze folgendes Skript mit drei bis vier unterschiedlichen Vorgabesets um schnell unterschiedliche PDF zu exportieren.

Läuft alles super. Das einzige was mich etwas stört ist, das mir keine Fehlermeldungen bzgl. Übersatztexte, fehlende Verknüpfungen, etc gemeldet werden, so wie das der Fall ist wenn man per Hand exportiert oder druckt.

Hat jemand ne Idee was ich im Skript ändern muss, damit diese Fehlermeldungen angezeigt werden?

Code
// Modul210.jsx    
// Original "doc2pdf" von Martin Fischer
//

var myPresets = ["meine Vorgabe"];

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;
}


Gruß Stefan
X

PDF-Export mit Fehlermeldung bei Übersatztext, fehlenden Verknüpfungen, etc

Martin Fischer
  
Beiträge gesamt: 12779

5. Mär 2014, 13:49
Beitrag # 2 von 6
Beitrag ID: #524493
Bewertung:
(4278 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stefan,

dazu müssten entsprechende Prüfroutinen oder eine dafür eingerichtete Preflight-Prüfung ergänzt werden.

Für die Verknüpfungen kann Dir folgendes Schnipsel als Grundlage dienen.

Code
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;
}


Für die Prüfung von Übersatz suche bitte im Forum nach 'overset jsx' und übernimm die entsprechenden Funktionen in Dein Skript.
Eventuell per app.doScript([one script], ScriptLanguage.JAVASCRIPT).

Mir fehlt grad die Zeit, so was sauber einzubauen.


als Antwort auf: [#524478]

PDF-Export mit Fehlermeldung bei Übersatztext, fehlenden Verknüpfungen, etc

ToniMontanaa
Beiträge gesamt: 426

5. Mär 2014, 20:44
Beitrag # 3 von 6
Beitrag ID: #524513
Bewertung:
(4193 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

Danke schon mal für die Tipps und den codeschnipsel. Ich dachte bisher eigentlich das dieses Skript im Endeffekt das gleiche macht wie wenn man von Hand exportiert. Den Export quasi nur anschuppst. Deshalb dachte ich es wäre mit einer einfachen codezeile getan damit die normale Fehlermeldung, die auch beim Export von Hand, angezeigt wird.

Ich werde auf jeden Fall mal versuchen das Skript entsprechend anzupassen und bei erfolg dies auch hier posten.

Gruß Stefan


als Antwort auf: [#524493]

PDF-Export mit Fehlermeldung bei Übersatztext, fehlenden Verknüpfungen, etc

ToniMontanaa
Beiträge gesamt: 426

14. Mär 2014, 12:51
Beitrag # 4 von 6
Beitrag ID: #524914
Bewertung:
(4111 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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


als Antwort auf: [#524493]

PDF-Export mit Fehlermeldung bei Übersatztext, fehlenden Verknüpfungen, etc

WernerPerplies
Beiträge gesamt: 2760

14. Mär 2014, 13:11
Beitrag # 5 von 6
Beitrag ID: #524919
Bewertung:
(4106 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stefan,

Zitat Das Skript läuft nach der Anzeige der Fehlermeldungen weiter und exportiert das PDF trotzdem. Hier sollte es eigentlich stoppen.

Ich weiß nicht, ob das hier in Frage kommt, aber die einfachste Art ein Skript abzubrechen, ist für mich diesr Weg:

Code
main(); 

function main()
{
var r = doSomeThing(false);
if ("error" in r)
{
alert(r.error.message);
}
else
alert("kein Abbruch!");
return;
/*Object*/function doSomeThing(/*Boolean*/cancel)
{
try
{
if (cancel)
{
// Abbruch!
throw new Error("Abbruch");
}
}
catch (error)
{
return {error: error};
}
return {};
}
}



als Antwort auf: [#524914]

PDF-Export mit Fehlermeldung bei Übersatztext, fehlenden Verknüpfungen, etc

kkauer
Beiträge gesamt: 661

14. Mär 2014, 20:42
Beitrag # 6 von 6
Beitrag ID: #524944
Bewertung:
(3991 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Warum "triggerst" du nicht einfach den Indesign-Preflight mit passenden Parametern?
Ich habe die "Grunddisziplinen" (Verknüpfungen, Textüberlauf) ebenfalls und deutlich "einfacher" nachgebaut, aber nur weil ich keinen Weg gefunden habe, via Skript-Preflight z.B. den Info-Bereich des Dokuments ein-/auszuschließen. Ohne solche Spezialanforderungen sollte der Preflight-Ansatz doch aber funktionieren und dieser wäre zudem noch mit der manuellen Vorgehensweise vergleichbar.


als Antwort auf: [#524914]
(Dieser Beitrag wurde von kkauer am 14. Mär 2014, 20:44 geändert)
X