[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Fußzeilen automatisieren???

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

Fußzeilen automatisieren???

ToniMontanaa
Beiträge gesamt: 426

25. Sep 2013, 13:00
Beitrag # 1 von 12
Bewertung:
(4255 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

kennt einer von euch eine Lösung um Fußzeilen in InDesign zu automatisieren. Ich habe schon länger an einer komfortablen Lösung dieses Problems gegrübelt, bin aber noch zu keinem Ergebnis gekommen. Unten der Link zum PDF wie das Layout aussehen soll. Es gibt in der rechten Spalte mit Inhalt und Artikelnummern immer mal wieder Fußzeilen zu verschiedenen Sprachkreisen die unten erklärt werden. Insgesamt gibt es momentan 56 verschiedene Sprachkreise. Da das Dokument gut über 100 Seiten hat bin ich auf der Suche nach einer Lösung diese Sprachkreise als Fußzeile automatisiert einfügen zu lassen, sobald diese oben eingefügt werden. Die InDesign-eigene Fußzeilen-Funktion fällt hierfür flach. Die Texte oben sowie auch die Fußzeilen sind komplett mit Zeichen- und Absatzformaten sowie unterschiedlichsten Grep-Stilen formatiert so das eigentlich alles mit einem Klick formatiert ist. Nur muß ich bis jetzt eben immer jede Seite nach Fußnoten absuchen und diese unten von Hand einfügen.

Wäre super wenn jemand eine Lösung parat hätte.
Grüße Stefan

Hier ein Link zur Beispieldatei
https://www.wetransfer.com/downloads/24c1e5575a48bda15fd3c6d94323845220130925104622/54bc094ee34d5631fd27f3c7348bdb7820130925104622/55c6ba

Grüße
Stefan
X

Fußzeilen automatisieren???

MSchmitz
Beiträge gesamt: 545

25. Sep 2013, 13:29
Beitrag # 2 von 12
Beitrag ID: #517749
Bewertung:
(4237 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hallo stefan,

mir würde spontan die idee eines verankerten objektes einfallen, in dem du deinen fußnotentext erstellen würdest. mit entsprechender s&e könnte man die hochgestellten ziffern mit dem entsprechenden verankerten objekt versehen.

die vertikale positionierung könntest du über ein objektformat steuern. die horizontale positionierung müsste man ab der zweiten fußnote wohl händisch vornehmen.

Markus Schmitz
Büro für typographische Dienstleistungen
www.typodienst.de

Win 10 Professional (64bit) - ID CS4, CS 5.0, CS5.5, CS 6.0, CC2018, CC2019, CC2020


als Antwort auf: [#517748]

Fußzeilen automatisieren???

Kai Rübsamen
Beiträge gesamt: 4664

25. Sep 2013, 14:47
Beitrag # 3 von 12
Beitrag ID: #517753
Bewertung:
(4201 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich weis nicht, ob ich es richtig verstanden habe: Suche auf der Seite "1" mit Zeichenformat hochgestellt und schreibe dann in einen Textrahmen etwas rein, was 1 zugeordnet ist?

Anbei mal ein Testdokument und ein paar erste Skriptzeilen. Kann mir hier bitte ein Skripter verraten, warum ich nicht nur auf der ersten oder aktiven Seite suchen kann > var fund = curPage.findGrep(); bringt mir einen Fehler.

Code
var curDoc = app.activeDocument; 
var curPage = curDoc.pages[0];
var tf = curPage.textFrames.item("meinRahmen");

var searchList = [
["1", "D-GB-I-E-P"],
["8", "D-GB"]
];

for ( var j = 0; j < searchList.length; j++ ) {
app.findGrepPreferences = app.changeGrepPreferences = null;
app.findGrepPreferences.findWhat= searchList[j][0];
app.findGrepPreferences.appliedCharacterStyle = curDoc.characterStyles.itemByName("fn");
var fund = app.findGrep();
if (fund.length > 0) {
tf.insertionPoints[-1].contents = searchList[j][0] + " " + searchList[j][1] + " ";
}
}

app.findGrepPreferences = app.changeGrepPreferences = null;


Gruß Kai Rübsamen


als Antwort auf: [#517749]
(Dieser Beitrag wurde von Kai Rübsamen am 25. Sep 2013, 14:48 geändert)

Anhang:
FoundFn.idml (33.1 KB)

Fußzeilen automatisieren???

ToniMontanaa
Beiträge gesamt: 426

25. Sep 2013, 15:59
Beitrag # 4 von 12
Beitrag ID: #517754
Bewertung:
(4173 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Markus,

ohne das jetzt ausprobiert zu haben, kann ich diese Lösung glaub verwerfen, da ich die S&E nicht auf einzelne Seiten anwenden. Es kann nämlich sein das bspw. auf Seite 1 die Fußnoten 3, 6, 9 vorkommen und auf Seite 2 die Fußnoten 3, 12, 18. Das heißt es sollten auch nur die Fußnoten am Seitenende erscheinen die auf der jeweiligen Seite auch vorkommen. Wenn ich dann noch die horizontale position händisch vornehmen muß bin ich mit der momentanen Arbeitsweise schneller.
Trotzdem Danke.

Grüße
Stefan


als Antwort auf: [#517749]

Fußzeilen automatisieren???

ToniMontanaa
Beiträge gesamt: 426

25. Sep 2013, 16:15
Beitrag # 5 von 12
Beitrag ID: #517755
Bewertung:
(4163 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Kai,

du hast das absolut richtig verstanden. Hab es gerade mal in deinem Testdokument getestet. So in etwa habe ich mir das vorgestellt.
Kann man dies nun im gesamten Dokument auf einmal anwenden oder Seite für Seite? Es sollten eben auf jeder Seite nur die Fußnoten erklärt sein die auch auf der jeweiligen Seite vorkommt.
Wo kann ich im Skript den Rahmen angeben in den die Fußzeile eingefügt wird?
Danke schon mal.
Gruß Stefan

Grüße
Stefan


als Antwort auf: [#517753]

Fußzeilen automatisieren???

Kai Rübsamen
Beiträge gesamt: 4664

25. Sep 2013, 16:34
Beitrag # 6 von 12
Beitrag ID: #517756
Bewertung:
(4147 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stefan,

das Skript ist nur ein erster Versuch ob es überhaupt geht und vorallem ob ich überhaupt richtig liege. Im aktuellen Stand kannst du es noch nicht verwenden.

Im aktuellen Stand gehe ich davon aus, dass es für den Fußnotenverweis ein Zeichenformat gibt und dass der Textrahmen ein Label "mein Rahmen" hat (Den Rahmen anwählen und im Ebenenbedienfeld benennen). Wenn das zu umständlich ist, evtl. ein Objektformat zuweisen. > Hier war ich mir als Skriptanfänger allerdings nicht sicher, ob ich diesen Rahmen direkt ansprechen kann oder ob ich ihn erst in einer Schleife durch alle Rahmen ermitteln muss. D.h. das mit dem labeln war schneller. Alternativ könnte man den Rahmen auch erst erzeugen lassen.

Zur Frage der Suche: Ich gehe stark davon aus, dass man die Suche auf die Seite beschränken, bzw. jede Seite einzeln durchgehen kann.
Auch interessant: Was soll denn da wie mit welchen Leerzeichen oder sonstigen Abständen eingefügt werden.

Vorschlag:
Bau bitte ein finales Beispiel mit 3-5 Seiten u. untersch. Ziffern inkl. Text im Rahmen, Label oder Objektformat u. sende mir das per PM. Ich würde heute Abend versuchen (!) das final zu bauen.

Gruß Kai Rübsamen


als Antwort auf: [#517755]

Fußzeilen automatisieren???

Uwe Laubender
Beiträge gesamt: 5223

25. Sep 2013, 17:36
Beitrag # 7 von 12
Beitrag ID: #517760
Bewertung:
(4111 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat von Kai Kann mir hier bitte ein Skripter verraten, warum ich nicht nur auf der ersten oder aktiven Seite suchen kann > var fund = curPage.findGrep(); bringt mir einen Fehler.


Hallo, Kai!
Ganz einfach: die Methode findGrep() ist für Seiten-Objekte "Pages" nicht verfügbar.

findGrep() gibt's für (Beispiel InDesign CS5.5):

Application
Cell
Character
Column
Document
InsertionPoint
Line
Paragraph
Row
Story
Table
Text
TextColumn
TextFrame
TextPath
TextStyleRange
Word
XMLElement
XmlStory

(Ende Gelände)

Siehe auch:
http://www.jongware.com/idjshelp.html

Schau Dir da mal die durchsuchbaren chm-Dateien an.
*****
Mit herzlichem Gruß,
Uwe Laubender


als Antwort auf: [#517753]

Fußzeilen automatisieren???

Kai Rübsamen
Beiträge gesamt: 4664

26. Sep 2013, 12:55
Beitrag # 8 von 12
Beitrag ID: #517787
Bewertung:
(3997 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hm, das ist dann der Punkt, wo ich als Skriptanfänger nicht mehr weiterkomme :(
Wenn es keinen direkten Zugriff gibt, nehme ich an, das es 3 Schleifen braucht?

1. Eine für die searchList
2. Eine für das Durchlaufen der Seite
3. Eine für das Durchlaufen aller Textrahmen auf einer Seite

Auch interessant: Wenn das Vorkommen auf einer Seite 1x gefunden wird, sollen ja nicht mehr die anderen Rahmen durchlaufen werden.

Ich habe mal in einer einfachen Variaten versucht, die Textrahmen auf Seite 1 zu durchlaufen u. bilde mir ein, dass das auch vorhin ohne Fehlermeldung geklappt hat. Jetzt erhalte ich allerdings den Fehler bei var fund = tf.findGrep() "Objekt enthält keinen Text zum Suchen/Ersetzen"
Wenn ich allerdings manuell suche oder mir auch den S/E-Dialog nach Abbruch des Skriptes ansehe, passt das eigentlich.

Fragen an die, die skripten können:
1. Was mache ich mit der Suche falsch?
2. Wie müssen die Schleifen am besten verschachtelt werden, damit alle Textrahmen in einer Seite mit versch. Dingen im mehrdim. Array searchList durchlaufen werden können.

Der OP u. ich danken für eine Antwort ;-)
@ Stefan: Wenn sich hier keiner meldet, musst du leider händisch formatieren.

Code
main(); 

function main() {

var curDoc = app.activeDocument;
var allTextFrames = curDoc.pages[0].textFrames;

var hit = false;

for (var t=0; t<allTextFrames.length; t++) {
var tf = allTextFrames[t];
app.findGrepPreferences = app.changeGrepPreferences = null;
app.findGrepPreferences.findWhat= "1";
app.findGrepPreferences.appliedCharacterStyle = curDoc.characterStyles.itemByName("Tabelle Hochzahl");
// wirft einen Fehler
var fund = tf.findGrep();
// wenn der Suchstring 1x gefunden wird
if (fund.length != 0) {
hit = true;
break;
}
}

if (hit == true) {
alert("Fundstelle auf der Seite");
// hier würde ich dann den ersten Text in den Rahmen schreiben
}
else {
alert("Keine Fundstelle auf der Seite");
}
}


Gruß Kai Rübsamen


als Antwort auf: [#517760]

Fußzeilen automatisieren???

Kai Rübsamen
Beiträge gesamt: 4664

27. Sep 2013, 10:02
Beitrag # 9 von 12
Beitrag ID: #517818
Bewertung:
(3932 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hm, 60 Leute habens gelesen und keiner hat ne Idee?

Ich versteh es gerade so:
Wenn ein Textrahmen leer ist und dieser durchsucht werden soll, kommt der Fehler. Ich muss also dafür sorgen, dass nur Textrahmen mit Inhalt durchsucht werden dürfen.

Code
main (); 

function main() {

var curDoc = app.activeDocument;
var allPages = curDoc.pages;

for (var i=0; i < allPages.length; i++) {
var curPage = allPages[i];
var targetFrame = curPage.textFrames.item("meinRahmen");
app.findGrepPreferences = app.changeGrepPreferences = null;
app.findGrepPreferences.findWhat = "1";
app.findGrepPreferences.appliedCharacterStyle = curDoc.characterStyles.itemByName("rot");
var tfs = curPage.textFrames;

for (var t=0; t < tfs.length; t++) {
var tf = tfs[t];
//tf.select();
if (tf.contents != 0) {
var res = tf.findGrep();
}
else { continue; }
if (res.length != 0) {
targetFrame.insertionPoints[-1].contents = "Erster Text";
res = null;
break;
}
}
}
}


In dem Zusammenhang habe ich noch eine andere Frage:
Ich hatte zuerst nach if (tf.contents != 0) auch die zweite if-Anweisung mit
if (res.length != 0 && res != undefined) ausführen lassen. Das funktioniert wohl auch.

Ich wundere mich aber, dass "undefined" mit Anführungen falsch wäre; also undefined ohne Anführungen richtig ist UND dabei nicht als reserviertes Wort blau ausgezeichnet wird?

Gruß Kai Rübsamen


als Antwort auf: [#517787]

Fußzeilen automatisieren???

gfellenz
Beiträge gesamt: 120

27. Sep 2013, 10:42
Beitrag # 10 von 12
Beitrag ID: #517822
Bewertung:
(3918 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Kai,

leider gibt es einen Fehler wenn kein Text im Textrahmen enthalten ist, was ich persönlich etwas unglücklich finde.

Ansonsten: Ich würde die Abfragen etwas anders gestalten:

Code
if (tf.contents != "")  {  
var res = tf.findGrep();
if (res.length > 0) {
targetFrame.insertionPoints[-1].contents = "Erster Text";
break;
}


Im ersten Fall willst du ja wissen, dass tf ja einen leeren String enthält im zweiten möchtest du wissen ob mindestesn 1 Ergebnis gab. Deine Variante funktinioniert genauso ist aber aus meiner Sicht ein schlechterer selbstdokumentierender Code. Wenn du Lust auf Verwirrung hast, dann guck dir das mal an: http://tinlizzie.org/~ohshima/truefalse/


Zum Thema [b]undefined das ist leider eine unglückliche Designentscheidung bei der Entwicklung der Sprache JavaScript gewesen. [b]undefined ist eine vordefinierte Variable, die dem Zustand einer einer nicht festgelegten Variable bzw. den Rückgabewert von Funktionen entspricht (sofern sie nicht explizit mit return etwas zurückliefern). Gleichzeitig gibt es aber auch den Typ [b]Undefined (wie Number, Boolean oder String) der den primitiven Wert [b]undefined hat.

Also:

Code
var a; 
alert(typeof a)
var b = c();
alert(typeof b)
function c () {}


Man könnte die Variable undefined verändern, das folgende Beispiel zeigt hoffentlich warum das eine ganz schlechte Idee ist:

Code
undefined = "Ich bin schlauer als der Rest"; 
var a;
alert(typeof a);
a = undefined;
alert(typeof a);






In der Praxis solltest du es wie ein reserviertes Wort verwenden.
--
Grüße aus Köln,
Gregor Fellenz
http://www.indesignblog.com


als Antwort auf: [#517753]

Fußzeilen automatisieren???

Kai Rübsamen
Beiträge gesamt: 4664

1. Okt 2013, 16:25
Beitrag # 11 von 12
Beitrag ID: #517961
Bewertung:
(3791 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Gregor,

danke für deine Hinweise u. die ein oder andere Erklärung außerhalb von hds :)

@ all:
Ich habe das Skript für Stefan fertigestellt und Roland Dreger gebeten, noch eine ProgressBar zu spendieren.
Anbei mein fertiges Ergebnis. Stefan hat es bereits getestet u. braucht jetzt bei 56 möglichen Verweisen pro Seite für 140 Seiten ca. 7 Minuten. Zu Fuß wären es womöglich Stunden gewesen ;-)

Was das Skript macht:
1. Sucht seitenweise alle Textrahmen nach in einer searchList festgelegten Kriterien ab
2. Wird etwas gefunden, wird ein Alternativtext in einen gelabelten Textrahmen auf der Seite übertragen
3. Gibt es bereits Text im Rahmen, wird dieser gelöscht und dann der neue Text eingetragen. D.h. das Skript reagiert auch auf Veränderungen durch nachträgliche Korrekturen und kann mehrmals ausgeführt werden.

Ich hab jede Menge beim Schreiben gelernt. Viell. nützt es ja jemand. Falls ein erfahrener Skripter größere Fehler findet, freue ich mich über Verbesserungen hier im Beitrag. Danke.

Gruß Kai Rübsamen


als Antwort auf: [#517822]
Anhang:
WriteReferenceToTextFrame_601.jsx (2.90 KB)

Fußzeilen automatisieren???

ToniMontanaa
Beiträge gesamt: 426

1. Okt 2013, 17:19
Beitrag # 12 von 12
Beitrag ID: #517965
Bewertung:
(3772 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Kai,

auch hier nochmal großen Dank für deine Bemühungen mit dem Skript.

Wie du ja schon geschrieben hast ist mit diesem Skript meine Arbeitszeit von ca. 1,5 Stunden am Schluss eines jeden Kataloges (gibt es ja wie erwähnt in etlichen Sprachen) auf 7 Minuten geschrumpft. Einfach Super!!!

Bin immer wieder begeistert und zugleich erfreut zu sehen, wie viel Leute es in diesem Forum gibt, die etliche Stunden ihrer privaten Zeit opfern um anderen weiter zu helfen ohne dafür etwas zu bekommen. Außer dem Dank und Wissen den man sich manchmal auch selbst aneignet.

Grüße an alle und vor allem an Kai.
Danke.

Grüße
Stefan


als Antwort auf: [#517961]
X

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
08.11.2022

Frankfurt, Fraport Conference Center
Dienstag, 08. Nov. 2022, 13.30 - 18.00 Uhr

Seminar

Auf der Enfocus World Tour stellen wir Ihnen gemeinsam mit Enfocus die aktuellen Highlights von Enfocus Switch und dem Impressed Workflow Server (IWS) vor. Wir präsentieren Ihnen anhand typischer Aufgabenstellungen in einem modernen Produktionsbetrieb die Möglichkeiten, die Enfocus Switch für die Automatisierung und Standardisierung von Abläufen bietet. Wir haben sowohl für Produktionsverantwortliche als auch technisch Interessierte ein spannendes Programm vorbereitet, bei dem Sie sicherlich viel Neues erfahren werden, welches Sie in Ihrem eigenen Betrieb umsetzen können. Die Veranstaltung bietet darüber hinaus eine hervorragende Möglichkeit, sich mit anderen Anwendern und Workflow-Spezialisten auszutauschen und Antworten auf konkrete Aufgabenstellungen zu erhalten, welche Sie mit Hilfe von Enfocus Switch/IWS umsetzen möchten.

Wir sind jeweils an 2 Tagen in Frankfurt, Hamburg und München vor Ort. Der erste (halbe) Tag richtet sich in erster Linie an Betriebsleiter und Produktionsverantwortliche in Druckereien - ist also weniger technisch orientiert - sondern gibt einen Überblick zu den heutigen Möglichkeiten einer automatisierten Produktion.

Der zweite Tag (Switch Anwender-Treffen) richtet sich an bestehende Switch-Anwender und Administratoren.

Anmeldung und weitere Infos: https://www.impressed.de/schulung.php?c=sDetail&sid=310

Ja

Organisator: Enfocus/Impressed

Kontaktinformation: Silvia Noack, E-Mailsnoack AT impressed DOT de

https://www.impressed.de/schulung.php?c=sDetail&sid=310

Enfocus World Tour 2022
Veranstaltungen
08.11.2022

Frankfurt, Fraport Conference Center
Dienstag, 08. Nov. 2022, 13.30 - 18.00 Uhr

Seminar

Auf der Enfocus World Tour stellen wir Ihnen gemeinsam mit Enfocus die aktuellen Highlights von Enfocus Switch und dem Impressed Workflow Server (IWS) vor. Wir präsentieren Ihnen anhand typischer Aufgabenstellungen in einem modernen Produktionsbetrieb die Möglichkeiten, die Enfocus Switch für die Automatisierung und Standardisierung von Abläufen bietet. Wir haben sowohl für Produktionsverantwortliche als auch technisch Interessierte ein spannendes Programm vorbereitet, bei dem Sie sicherlich viel Neues erfahren werden, welches Sie in Ihrem eigenen Betrieb umsetzen können. Die Veranstaltung bietet darüber hinaus eine hervorragende Möglichkeit, sich mit anderen Anwendern und Workflow-Spezialisten auszutauschen und Antworten auf konkrete Aufgabenstellungen zu erhalten, welche Sie mit Hilfe von Enfocus Switch/IWS umsetzen möchten.

Wir sind jeweils an 2 Tagen in Frankfurt, Hamburg und München vor Ort. Der erste (halbe) Tag richtet sich in erster Linie an Betriebsleiter und Produktionsverantwortliche in Druckereien - ist also weniger technisch orientiert - sondern gibt einen Überblick zu den heutigen Möglichkeiten einer automatisierten Produktion.

Der zweite Tag (Switch Anwender-Treffen) richtet sich an bestehende Switch-Anwender und Administratoren.

Anmeldung und weitere Infos: https://www.impressed.de/schulung.php?c=sDetail&sid=310

Ja

Organisator: Enfocus/Impressed

Kontaktinformation: Silvia Noack, E-Mailsnoack AT impressed DOT de

https://www.impressed.de/schulung.php?c=sDetail&sid=310

Enfocus World Tour 2022