- // Absatz-Abweichungen entfernen.jsx
if (app.documents.length == 0) {
alert("Kein Dokument geöffnet");
exit();
}
main();
function main() {
var myDoc = app.documents[0];
var _wholeDoc = 0;
// Etwas ausgewählt?
if (app.selection.length > 0) {
switch (app.selection[0].constructor.name) { // Abfrage, was ausgewählt ist
case "Text":
case "Character":
case "Word":
case "Line":
case "TextColumn":
case "Paragraph":
case "TextStyleRange":
case "InsertionPoint":
break;
default:
// Es ist etwas ausgewählt, aber kein Textobjekt, daher wird das gesamte Dokument berücksichtigt
_wholeDoc = 1;
}
} else {
// Nichts ausgewählt, gesamtes Dokument wird berücksichtigt.
_wholeDoc = 1;
}
var theOptions = (myDisplayDialog(_wholeDoc)); //in _wholeDoc wird übergeben, ob das gesamte Dokument berücksichtigt werden muss (=1)
var myMasterPageSelection = theOptions[16]; // (true/false)
var myStorySelection = theOptions[15];
//alert(myStorySelection, "myStorySelection");
switch (myStorySelection) {
case 0: // gesamtes Dokument wird berücksichtigt
var myObject = myDoc.stories;
break;
case 1: // aktueller Textfluss wird berücksichtigt
var myObject = [app.selection[0].parentStory];
break;
default:
var myObject = app.selection;
//alert(myObject, "myObject");
}
for (i = 0; i < myObject.length; i++) {
if (myObject[i].paragraphs[0].parentTextFrames[0].parent.constructor.name == 'Spread') {
RemoveOverrides(myObject[i].paragraphs, myObject[i].footnotes, myObject[i].tables, theOptions);
}
// wenn der erste Absatz des Textflusses in einem Rahmen auf der Musterseite steht und die Option 14 (MasterPageSelection) aktiviert ist,
// wird die Funktion ausgeführt
if (myObject[i].paragraphs[0].parentTextFrames[0].parent.constructor.name == 'MasterSpread' && myMasterPageSelection == true) {
RemoveOverrides(myObject[i].paragraphs, myObject[i].footnotes, myObject[i].tables, theOptions);
}
}
alert("Abweichungen lt. Eingaben im Dialogfeld entfernt!", "Fertig!");
}
function RemoveOverrides(myParagraphs, myFootnotes, myTables, theOptions) {
//alert(myParagraphs + ", " + myFootnotes + ", " + myTables, "RemoveOverrides:");
alert(myParagraphs.length + " Absätze, " + myFootnotes.length + " Fußnoten und " + myTables.length + " Tabellen berücksichtigt!", "Anzahl der Objekte:");
var myHyphenation = theOptions[0]; // (true/false)
var myLanguage = theOptions[1]; // (true/false)
var myFontfamily = theOptions[2]; // (true/false)
var myFontstyle = theOptions[3]; // (true/false)
var myPointsize = theOptions[4]; // (true/false)
var myLeading = theOptions[5]; // (true/false)
var myTracking = theOptions[6]; // (true/false)
var myJustification = theOptions[7]; // (true/false)
var myColor = theOptions[8]; // (true/false)
var myIndents = theOptions[9]; // (true/false)
var mySpace = theOptions[10]; // (true/false)
var myKeeplines = theOptions[11]; // (true/false)
var myTablist = theOptions[12]; // (true/false)
var myDirection = theOptions[13]; // (true/false)
var myKinsoku = theOptions[14]; // (true/false)
var myStorySelection = theOptions[15]; // (0=Dokument, 1=Textfluss, 2=Auswahl)
// Alle Absätze im jeweiligen Textfluss durchgehen und Einstellungen je nach Auswahl im Dialogfeld zurücksetzen
for (j = 0; j < myParagraphs.length; j++) {
if (myHyphenation == true) { // Silbentrennung
RemoveHyphenation(myParagraphs[j]);
}
if (myLanguage == true) { // Sprache
RemoveLanguage(myParagraphs[j]);
}
if (myFontfamily == true) { // Font, Achtung: Schriftschnitt wird auch zurückgesetzt
RemoveFontfamily(myParagraphs[j]);
}
if (myFontstyle == true) { // Schriftschnitt
RemoveFontstyle(myParagraphs[j]);
}
if (myPointsize == true) { // Schriftgröße
RemovePointsize(myParagraphs[j]);
}
if (myLeading == true) { // Zeilenabstand
RemoveLeading(myParagraphs[j]);
}
if (myTracking == true) { // Laufweite
RemoveTracking(myParagraphs[j]);
}
if (myJustification == true) { // Ausrichtung
RemoveJustification(myParagraphs[j]);
}
if (myColor == true) { // Schriftfarbe
RemoveColor(myParagraphs[j]);
}
if (myIndents == true) { // Einzüge
RemoveIndents(myParagraphs[j]);
}
if (mySpace == true) { // Abstände
RemoveSpace(myParagraphs[j]);
}
if (myKeeplines == true) { // Absatzkontrolle
RemoveKeeplines(myParagraphs[j]);
}
if (myTablist == true) { // Tabulatoren
RemoveTablist(myParagraphs[j]);
}
if (myDirection == true) { // Links-Rechts-Ausrichtung
RemoveDirection(myParagraphs[j]);
}
if (myKinsoku == true) { // Kinsoku-Einstellung
RemoveKinsoku(myParagraphs[j]);
}
}
// Alle Fußnoten im jeweiligen Textfluss durchgehen und in allen Absätzen der Fußnoten Einstellungen je nach Auswahl im Dialogfeld zurücksetzen
for (j = 0; j < myFootnotes.length; j++) {
for (k = 0; k < myFootnotes[j].paragraphs.length; k++) {
if (myHyphenation == true) { // Silbentrennung
RemoveHyphenation(myFootnotes[j].paragraphs[k]);
}
if (myLanguage == true) { // Sprache
RemoveLanguage(myFootnotes[j].paragraphs[k]);
}
if (myFontfamily == true) { // Font, Achtung: Schriftschnitt wird auch zurückgesetzt
RemoveFontfamily(myFootnotes[j].paragraphs[k]);
}
if (myFontstyle == true) { // Schriftschnitt
RemoveFontstyle(myFootnotes[j].paragraphs[k]);
}
if (myPointsize == true) { // Schriftgröße
RemovePointsize(myFootnotes[j].paragraphs[k]);
}
if (myLeading == true) { // Zeilenabstand
RemoveLeading(myFootnotes[j].paragraphs[k]);
}
if (myTracking == true) { // Laufweite
RemoveTracking(myFootnotes[j].paragraphs[k]);
}
if (myJustification == true) { // Ausrichtung
RemoveJustification(myFootnotes[j].paragraphs[k]);
}
if (myColor == true) { // Schriftfarbe
RemoveColor(myFootnotes[j].paragraphs[k]);
}
if (myIndents == true) { // Einzüge
RemoveIndents(myFootnotes[j].paragraphs[k]);
}
if (mySpace == true) { // Abstände
RemoveSpace(myFootnotes[j].paragraphs[k]);
}
if (myKeeplines == true) { // Absatzkontrolle
RemoveKeeplines(myFootnotes[j].paragraphs[k]);
}
if (myTablist == true) { // Tabulatoren
RemoveTablist(myFootnotes[j].paragraphs[k]);
}
if (myDirection == true) { // Links-Rechts-Ausrichtung
RemoveDirection(myFootnotes[j].paragraphs[k]);
}
if (myKinsoku == true) { // Kinsoku-Einstellung
RemoveKinsoku(myFootnotes[j].paragraphs[k]);
}
}
}
// Alle Tabellen im jeweiligen Textfluss durchgehen und in allen Absätzen in allen Zellen der Tabellen Einstellungen je nach Auswahl im Dialogfeld zurücksetzen
for (j = 0; j < myTables.length; j++) {
for (k = 0; k < myTables[j].cells.length; k++) {
for (l = 0; l < myTables[j].cells[k].paragraphs.length; l++) {
if (myHyphenation == true) { // Silbentrennung
RemoveHyphenation(myTables[j].cells[k].paragraphs[l]);
}
if (myLanguage == true) { // Sprache
RemoveLanguage(myTables[j].cells[k].paragraphs[l]);
}
if (myFontfamily == true) { // Font, Achtung: Schriftschnitt wird auch zurückgesetzt
RemoveFontfamily(myTables[j].cells[k].paragraphs[l]);
}
if (myFontstyle == true) { // Schriftschnitt
RemoveFontstyle(myTables[j].cells[k].paragraphs[l]);
}
if (myPointsize == true) { // Schriftgröße
RemovePointsize(myTables[j].cells[k].paragraphs[l]);
}
if (myLeading == true) { // Zeilenabstand
RemoveLeading(myTables[j].cells[k].paragraphs[l]);
}
if (myTracking == true) { // Laufweite
RemoveTracking(myTables[j].cells[k].paragraphs[l]);
}
if (myJustification == true) { // Ausrichtung
RemoveJustification(myTables[j].cells[k].paragraphs[l]);
}
if (myColor == true) { // Schriftfarbe
RemoveColor(myTables[j].cells[k].paragraphs[l]);
}
if (myIndents == true) { // Einzüge
RemoveIndents(myTables[j].cells[k].paragraphs[l]);
}
if (mySpace == true) { // Abstände
RemoveSpace(myTables[j].cells[k].paragraphs[l]);
}
if (myKeeplines == true) { // Absatzkontrolle
RemoveKeeplines(myTables[j].cells[k].paragraphs[l]);
}
if (myTablist == true) { // Tabulatoren
RemoveTablist(myTables[j].cells[k].paragraphs[l]);
}
if (myDirection == true) { // Links-Rechts-Ausrichtung
RemoveDirection(myTables[j].cells[k].paragraphs[l]);
}
if (myKinsoku == true) { // Kinsoku-Einstellung
RemoveKinsoku(myTables[j].cells[k].paragraphs[l]);
}
}
}
}
}
function RemoveHyphenation(myObject) {
myObject.hyphenation = myObject.appliedParagraphStyle.hyphenation;
myObject.hyphenWeight = myObject.appliedParagraphStyle.hyphenWeight;
myObject.hyphenateAcrossColumns = myObject.appliedParagraphStyle.hyphenateAcrossColumns;
myObject.hyphenateAfterFirst = myObject.appliedParagraphStyle.hyphenateAfterFirst;
myObject.hyphenateBeforeLast = myObject.appliedParagraphStyle.hyphenateBeforeLast;
myObject.hyphenateCapitalizedWords = myObject.appliedParagraphStyle.hyphenateCapitalizedWords;
myObject.hyphenateLadderLimit = myObject.appliedParagraphStyle.hyphenateLadderLimit;
myObject.hyphenateLastWord = myObject.appliedParagraphStyle.hyphenateLastWord;
myObject.hyphenateWordsLongerThan = myObject.appliedParagraphStyle.hyphenateWordsLongerThan;
myObject.hyphenationZone = myObject.appliedParagraphStyle.hyphenationZone;
myObject.providerHyphenationStyle = myObject.appliedParagraphStyle.providerHyphenationStyle;
}
function RemoveLanguage(myObject) {
myObject.appliedLanguage = myObject.appliedParagraphStyle.appliedLanguage;
}
function RemoveFontfamily(myObject) {
myObject.appliedFont = myObject.appliedParagraphStyle.appliedFont;
}
function RemoveFontstyle(myObject) {
myObject.fontStyle = myObject.appliedParagraphStyle.fontStyle;
}
function RemovePointsize(myObject) {
myObject.pointSize = myObject.appliedParagraphStyle.pointSize;
}
function RemoveLeading(myObject) {
myObject.leading = myObject.appliedParagraphStyle.leading;
myObject.autoLeading = myObject.appliedParagraphStyle.autoLeading;
}
function RemoveTracking(myObject) {
myObject.tracking = myObject.appliedParagraphStyle.tracking;
}
function RemoveJustification(myObject) {
myObject.justification = myObject.appliedParagraphStyle.justification;
}
function RemoveColor(myObject) {
myObject.fillColor = myObject.appliedParagraphStyle.fillColor;
myObject.fillTint = myObject.appliedParagraphStyle.fillTint;
}
function RemoveIndents(myObject) {
myObject.firstLineIndent = myObject.appliedParagraphStyle.firstLineIndent;
myObject.lastLineIndent = myObject.appliedParagraphStyle.lastLineIndent;
myObject.leftIndent = myObject.appliedParagraphStyle.leftIndent;
myObject.rightIndent = myObject.appliedParagraphStyle.rightIndent;
}
function RemoveSpace(myObject) {
myObject.spaceAfter = myObject.appliedParagraphStyle.spaceAfter;
myObject.spaceBefore = myObject.appliedParagraphStyle.spaceBefore;
myObject.sameParaStyleSpacing = myObject.appliedParagraphStyle.sameParaStyleSpacing;
}
function RemoveKeeplines(myObject) {
myObject.keepAllLinesTogether = myObject.appliedParagraphStyle.keepAllLinesTogether;
myObject.keepFirstLines = myObject.appliedParagraphStyle.keepFirstLines;
myObject.keepLastLines = myObject.appliedParagraphStyle.keepLastLines;
myObject.keepLinesTogether = myObject.appliedParagraphStyle.keepLinesTogether;
myObject.keepWithNext = myObject.appliedParagraphStyle.keepWithNext;
myObject.keepWithPrevious = myObject.appliedParagraphStyle.keepWithPrevious;
}
function RemoveTablist(myObject) {
myObject.tabList = myObject.appliedParagraphStyle.tabList;
}
function RemoveDirection(myObject) {
myObject.characterDirection = myObject.appliedParagraphStyle.characterDirection;
}
function RemoveKinsoku(myObject) {
myObject.kinsokuSet = myObject.appliedParagraphStyle.kinsokuSet;
}
function myDisplayDialog(_wholeDoc) {
var myDialog = app.dialogs.add({
name: "Absatz-Abweichungen entfernen"
});
with (myDialog.dialogColumns.add()) {
with (dialogRows.add()) {
staticTexts.add({
staticLabel: "Welche Attribute sollen berücksichtigt werden?"
});
}
with (dialogRows.add()) {
staticTexts.add({
staticLabel: "ACHTUNG: Möglicherweise bestehen manche Abweichungen absichtlich, z.B. Schriftschnitt, Schriftgröße, Schriftfarbe, Laufweite, Einzüge!"
});
}
with (dialogRows.add()) {
staticTexts.add({
staticLabel: "ACHTUNG: Zeichenformate werden ignoriert! Betroffene Zeichen werden trotzdem auf Absatzstandard zurückgesetzt!"
});
}
with (dialogRows.add()) {
with (borderPanels.add()) {
with (dialogColumns.add()) {
var myHyphenationCheckbox = checkboxControls.add({
staticLabel: "Silbentrennung",
checkedState: true
});
var myLanguageCheckbox = checkboxControls.add({
staticLabel: "Sprache",
checkedState: true
});
var myFontfamilyCheckbox = checkboxControls.add({
staticLabel: "Schriftart*"
});
var myFontstyleCheckbox = checkboxControls.add({
staticLabel: "Schriftschnitt"
});
}
with (dialogColumns.add()) {
var myPointsizeCheckbox = checkboxControls.add({
staticLabel: "Schriftgröße"
});
var myLeadingCheckbox = checkboxControls.add({
staticLabel: "Zeilenabstand"
});
var myTrackingCheckbox = checkboxControls.add({
staticLabel: "Laufweite"
});
var myJustificationCheckbox = checkboxControls.add({
staticLabel: "Ausrichtung"
});
}
with (dialogColumns.add()) {
var myColorCheckbox = checkboxControls.add({
staticLabel: "Schriftfarbe"
});
var myIndentsCheckbox = checkboxControls.add({
staticLabel: "Einzüge"
});
var mySpaceCheckbox = checkboxControls.add({
staticLabel: "Abstand oben/unten"
});
var myKeeplinesCheckbox = checkboxControls.add({
staticLabel: "Umbruchoptionen",
checkedState: true
});
}
with (dialogColumns.add()) {
var myTablistCheckbox = checkboxControls.add({
staticLabel: "Tabulatoren"
});
var myDirectionCheckbox = checkboxControls.add({
staticLabel: "Links-Rechts-Ausrichtung",
checkedState: true
});
var myKinsokuCheckbox = checkboxControls.add({
staticLabel: "Kinsoku",
checkedState: true
});
}
}
}
with (dialogRows.add()) {
staticTexts.add({
staticLabel: "* ACHTUNG: Auch der Schriftschnitt wird zurückgesetzt, wenn das Kontrollfeld aktiviert wird."
});
}
with (dialogRows.add()) {
staticTexts.add({
staticLabel: ""
});
}
with (dialogRows.add()) {
staticTexts.add({
staticLabel: "In welchem Bereich sollen die Abweichungen entfernt werden?"
});
}
with (dialogRows.add()) {
with (borderPanels.add()) {
var myStoryButtons = radiobuttonGroups.add();
with (myStoryButtons) {
radiobuttonControls.add({
staticLabel: "Im gesamten Dokument",
checkedState: true
});
if (_wholeDoc == 0) {
radiobuttonControls.add({
staticLabel: "Im (gesamten) ausgewählten Textfluss",
checkedState: true
});
radiobuttonControls.add({
staticLabel: "Im ausgewählten Absatz"
});
}
}
}
}
with (dialogRows.add()) {
staticTexts.add({
staticLabel: ""
});
with (dialogRows.add()) {
var myMasterPageCheckbox = checkboxControls.add({
staticLabel: "Musterseitenelemente einbeziehen?",
checkedState: false
});
}
}
}
var myResult = myDialog.show();
if (myResult == true) {
var myHyphenation = myHyphenationCheckbox.checkedState;
var myLanguage = myLanguageCheckbox.checkedState;
var myFontfamily = myFontfamilyCheckbox.checkedState;
var myFontstyle = myFontstyleCheckbox.checkedState;
var myPointsize = myPointsizeCheckbox.checkedState;
var myLeading = myLeadingCheckbox.checkedState;
var myTracking = myTrackingCheckbox.checkedState;
var myJustification = myJustificationCheckbox.checkedState;
var myColor = myColorCheckbox.checkedState;
var myIndents = myIndentsCheckbox.checkedState;
var mySpace = mySpaceCheckbox.checkedState;
var myKeeplines = myKeeplinesCheckbox.checkedState;
var myTablist = myTablistCheckbox.checkedState;
var myDirection = myDirectionCheckbox.checkedState;
var myKinsoku = myKinsokuCheckbox.checkedState;
var myStorySelection = myStoryButtons.selectedButton;
var myMasterPageSelection = myMasterPageCheckbox.checkedState;
myDialog.destroy();
} else {
myDialog.destroy();
alert("Skript abgebrochen!");
exit();
}
return [myHyphenation, myLanguage, myFontfamily, myFontstyle, myPointsize, myLeading, myTracking, myJustification, myColor, myIndents, mySpace, myKeeplines, myTablist, myDirection, myKinsoku, myStorySelection, myMasterPageSelection];
}