[GastForen Programme Print/Bildbearbeitung Adobe InDesign Absätze mit einer Fläche hinterlegen

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

Absätze mit einer Fläche hinterlegen

mgrams
Beiträge gesamt: 28

30. Okt 2013, 14:42
Beitrag # 1 von 6
Bewertung:
(2702 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

ich arbeite auf Mac OS X 10.6.8 mit Adobe inDesign CS5.

Hier im Forum bin ich auf das Script "para filled by rules - all.jsx" gestossen, welches auch seinen Dienst tut. Allerdings ist die Voraussetzung für die Ausführung, dass der Cursor in einem der Absätze sein muss, für die das Script laufen soll. Da das Script automatisch am Ende eines Workflows ausgeführt werden soll, hätte ich gerne eine andere Lösung. Und zwar so, dass im Script zwei (oder mehr) Absatzformate definiert werden, für die dann die Hinterlegung ausgeführt wird. Leider ist mir das bisher nicht gelungen. Wäre schön, wenn jemand eine Idee hätte, wie man das einbauen kann.

Code
if (app.documents.length != 0){ 
if (app.selection.length == 1){
switch (app.selection[0].constructor.name){
case "Text":
case "InsertionPoint":
case "Character":
case "Word":
case "Line":
case "TextStyleRange":
case "Paragraph":
main();
break;
default:
alert("Es ist kein Text markiert.");
break;
}
}
else{
alert("Es ist nichts markiert.");
}
}
else{
alert("Es ist kein Dokument offen.");
}

function main() {
var findTheseNames = new Array();
var findThese = new Array();

var myPars = app.selection[0].paragraphs;
for (var n=0; n < myPars.length; n++) {
var aParStyle = myPars[n].appliedParagraphStyle;
if (!isInArray(aParStyle.name, findTheseNames)) {
findTheseNames.push(aParStyle.name);
findThese.push(aParStyle);
}
}

var aDoc = app.activeDocument;
for (n = 0; n < findThese.length; n++) {
app.findTextPreferences = app.changeTextPreferences = null;
app.findTextPreferences.appliedParagraphStyle = findThese[n];
var foundTexts = aDoc.findText(true);
var a = foundTexts [0];
for (m = 0; m < foundTexts.length; m++) {
for (var o = 0; o < foundTexts[m].paragraphs.length; o++) {
paintPara(foundTexts[m].paragraphs[o]);
}
}
}
}

function isInArray(myItem, myArray) {
for (var n = 0; n < myArray.length; n++) {
if (myItem == myArray[n]) {return true}
}
return false;
}
function paintPara( aPara) {
app.select(aPara);
var aStory = aPara.parentStory;
var fstIndex = aPara.characters[0].index;
var lstIndex = aPara.lines[-1].characters[0].index;
var nLines = aPara.lines.length;

var oldUnits = app.activeDocument.viewPreferences.verticalMeasurementUnits;
app.activeDocument.viewPreferences.verticalMeasurementUnits = MeasurementUnits.POINTS;

var aStyle = aPara.appliedParagraphStyle;
with (aStyle) {
var rao = ruleAboveOffset;
var ralw = ruleAboveLineWeight;
var rbo = ruleBelowOffset;
var rblw = ruleBelowLineWeight;
if (leading == Leading.AUTO) {
var ZA = autoLeading * pointSize/100;
} else {
var ZA = leading;
}
}
if (nLines > 2) {
var fli = aPara.firstLineIndent;
if ( aStory.insertionPoints[fstIndex].horizontalOffset - fli != aStory.insertionPoints[lstIndex].horizontalOffset) {
try {
for (var n=1; aPara.lines[n].insertionPoints[0].horizontalOffset == aPara.lines[n+1].insertionPoints[0].horizontalOffset; n++) {}
var nLinesLeft = n;
var nLinesRight = nLines - n -2;
} catch (e) {
// Das kann eigentlich nur schiefgehen, wenn links nur eine Zeile ist.
var nLinesLeft = 0;
var nLinesRight = nLines - 2;
}
} else {
var nLinesLeft = 0;
var nLinesRight = nLines - 2;
}
with (aPara) {
ruleBelowLineWeight = rblw + (nLinesRight * ZA);
ruleBelowOffset = rbo - (nLinesRight * ZA);
ruleAboveLineWeight = ralw + (nLinesLeft * ZA);
ruleAboveOffset = rao - (nLinesLeft * ZA);
}
app.activeDocument.viewPreferences.verticalMeasurementUnits = oldUnits;
} else {
with (aPara) {
ruleBelowLineWeight = rblw;
ruleBelowOffset = rbo;
ruleAboveLineWeight = ralw;
ruleAboveOffset = rao;
}
}
}

function getParaByIx( ix, aStory ) {
try {
for (var n = 0; aStory.paragraphs[n].insertionPoints[0].index <= ix; n++) {
var test = aStory.paragraphs[n].insertionPoints[0].index ;
var test = aStory.paragraphs[n+1].insertionPoints[0].index ;
}
return n-1;
} catch (e) {
return -1;
}
}

Viele Grüße,

Michael Grams
mg

(Dieser Beitrag wurde von Martin Fischer am 30. Okt 2013, 15:08 geändert)
X

Absätze mit einer Fläche hinterlegen

Martin Fischer
  
Beiträge gesamt: 12625

30. Okt 2013, 15:06
Beitrag # 2 von 6
Beitrag ID: #519129
Bewertung:
(2687 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Michael,

kennst Du das Plugin ParagraphBorder von dtp utils?

Kostet ein paar (wenige) Euros.
Macht aber das, was Du brauchst, flexibel im Absatzformat und noch einiges mehr.

Viele Grüße
Martin




als Antwort auf: [#519127]

Absätze mit einer Fläche hinterlegen

mgrams
Beiträge gesamt: 28

30. Okt 2013, 16:06
Beitrag # 3 von 6
Beitrag ID: #519133
Bewertung:
(2645 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

danke für die prompte Antwort.

Das Plugin ist sicher sehr hilfreich, es ist auch kein Problem, dass es etwas kostet, darum geht es nicht. Es ist nur so, dass wir Dokumente automatisch mit XML-Dateien aufbauen lassen. Über diese Dokumente läuft ein Script zur Bereinigung, aufbauend auf FindChangeByList. In einem zweiten Step wollte ich das Script mit dem Hintergrund laufen lassen.

Es kann dabei eine Liste von Javascripten abgearbeitet werden, der Zugriff auf ein Plugin ist nicht möglich.

Wenn eine Anpassung des vorhandenen Scripts nicht ohne größeren Aufwand möglich ist, werde ich vorübergehend auf eine Übergangslösung zurückgreifen und die Dateien manuell bereinigen. Vielleicht fällt mir noch ein anderer Ansatz ein.

Aber trotzdem vielen Dank für den Tipp, vielleicht kann ich das Plugin an anderer Stelle nutzen, sieht auf jeden Fall interessant aus.

Viele Grüße,

Michael Grams
mg


als Antwort auf: [#519129]

Absätze mit einer Fläche hinterlegen

Martin Fischer
  
Beiträge gesamt: 12625

30. Okt 2013, 16:34
Beitrag # 4 von 6
Beitrag ID: #519135
Bewertung:
(2630 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Es kann dabei eine Liste von Javascripten abgearbeitet werden, der Zugriff auf ein Plugin ist nicht möglich.


M.E. ist ein Zugriff auf das Plugin nicht zwingend nötig.
Die Absatzformate, in welchen die Unterlegung durch das Plugin vorbereitet ist, könnten z.B. im aktiven Dokument (in einer AF-Gruppe) oder in einem Template bereitgehalten werden.

Ein Skript könnte unter bestimmten ermittelten Bedingungen für die Zuweisung dieser vorbereiteten Absatzformate sorgen.

Viele Grüße
Martin




als Antwort auf: [#519133]

Absätze mit einer Fläche hinterlegen

mgrams
Beiträge gesamt: 28

30. Okt 2013, 16:53
Beitrag # 5 von 6
Beitrag ID: #519137
Bewertung:
(2610 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

das Stichwort war Template, alle Dokumente werden aus einer Template-Datei aufgebaut, damit können die Hintergrund-Optionen in den Formaten hinterlegt werden, ein separater Zugriff ist nicht mehr nötig.

Manchmal verrennt man sich dermaßen, dass man einen Denkansatz von außerhalb braucht, vielen Dank dafür.

Michael Grams
mg


als Antwort auf: [#519135]

Absätze mit einer Fläche hinterlegen

mgrams
Beiträge gesamt: 28

31. Okt 2013, 15:45
Beitrag # 6 von 6
Beitrag ID: #519178
Bewertung:
(2436 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

das Plugin war genau die richtige Lösung.

Zu FindChangeByList hätte ich noch eine Frage. Das Script läuft ja durch Doppelclick automatisch für das gesamte Dokument. Befindet sich der Cursor in einem Textrahmen oder ist ein Textrahmen aktiv erscheint ein Dialog, der die Auswahl "Selection", "Selected Story" und "Document" bietet.

Für eine automatische Anwendung wäre es mir aber lieber, das Script würde ungeachtet einer Auswahl immer ohne Dialog für das gesamte Dokument laufen.
Ich habe schon einiges auskommentiert, bin aber noch nicht zum gewünschten Ergebnis gekommen. Ist das überhaupt möglich?

Vielel Grüße,

Michael Grams
mg


als Antwort auf: [#519137]
X

Aktuell

PDF / Print
Wolken_300

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