[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: 425

5. Mär 2014, 11:18
Beitrag # 1 von 6
Bewertung:
(3529 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

Grüße
Stefan
X

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

Martin Fischer
  
Beiträge gesamt: 12398

5. Mär 2014, 13:49
Beitrag # 2 von 6
Beitrag ID: #524493
Bewertung:
(3489 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.

Viele Grüße
Martin




als Antwort auf: [#524478]

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

ToniMontanaa
Beiträge gesamt: 425

5. Mär 2014, 20:44
Beitrag # 3 von 6
Beitrag ID: #524513
Bewertung:
(3404 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

Grüße
Stefan


als Antwort auf: [#524493]

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

ToniMontanaa
Beiträge gesamt: 425

14. Mär 2014, 12:51
Beitrag # 4 von 6
Beitrag ID: #524914
Bewertung:
(3322 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

Grüße
Stefan


als Antwort auf: [#524493]

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

WernerPerplies
Beiträge gesamt: 2554

14. Mär 2014, 13:11
Beitrag # 5 von 6
Beitrag ID: #524919
Bewertung:
(3317 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 {};
}
}


Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler 16.12.2020, Version 3.XX, neue Funktionen
Kundenstimmen


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:
(3202 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

Aktuell

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
26.01.2021 - 27.01.2021

Digicomp Academy AG, Zürich oder virtuell
Dienstag, 26. Jan. 2021, 08.30 Uhr - Mittwoch, 27. Jan. 2021, 17.00 Uhr

Kurs

In diesem Advanced-Kurs erlernen Sie weitergehende Methoden im Dokumentenaufbau, der Typografie und im Bereich Layouttechniken. Nach diesem Kurs können Sie strukturierte Dokumente erstellen oder bestehende effizienter anpassen.

Dauer: 2 Tage
Preis: CHF 1'400.–

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberatung AT digicomp DOT ch

digicomp.ch/d/INDEM2

Veranstaltungen
27.01.2021 - 28.01.2021

Digicomp Academy AG, Bern oder Basel
Mittwoch, 27. Jan. 2021, 08.30 Uhr - Donnerstag, 28. Jan. 2021, 17.00 Uhr

Kurs

Mit After Effects können Sie visuelle Effekte und Animationen für Video, Web, DVD und Blu-Ray erzeugen. In diesem Kurs lernen Sie die Grundlagen kennen und sehen inspirierende Anwendungsbeispiele, die Ihnen helfen, Ihre eigenen Ideen umzusetzen.

Preis: CHF 1'700.-
Dauer: 2 Tage

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberatung AT digicomp DOT ch

digicomp.ch/d/AFT

Neuste Foreneinträge


Absätze vor/nach AF suchen

Laser Drucker druckt schwarze Flecken Links und Rechts von Blatt

Gleich Große Icons erstellen

PSD CS6 (!) Mac: Dialog "Dateiinformationen" Fenster leer und Sackgasse

Langsamer MacMini

Illustrator Skript Übersatztext - Hilfe benötigt

ID CC 2019 und 2020: Crash beim Startvorgang - 2021

Inhalt Textrahmen verbinden

iPhone Farbprofil

Exel ohne leeres Tabellenblatt starten
medienjobs