[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Jeder Rahmen einer Textflusskette am Ende mit SpecialCharacters.Frame_BREAK?

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

Jeder Rahmen einer Textflusskette am Ende mit SpecialCharacters.Frame_BREAK?

pixelstaub
Beiträge gesamt: 128

29. Jul 2019, 16:20
Beitrag # 1 von 3
Bewertung:
(2064 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Liebes Forum,

ich würde gerne am Ende eines jeden Rahmens innerhalb einer Textflusskette einen Rahmenumbruch einfügen (damit sich beim anschließenden Suchen und Ersetzen nichts auf eine andere Seite verschiebt)

Allerdings gestaltet sich das schwieriger als erwartet … Ein return als letztes Zeichen beispielsweise rutscht auf die letzte Seite. Ist das letzte Zeichen ein Buchstabe, ist er danach weg

Mein noch nicht so treffsicherer Ansatz …
Code
var myDoc = app.activeDocument; 
var firstMaintext = 0;
var alleSeiten = myDoc.pages;
for (a = 0; a < alleSeiten.pages.length; a++)
{
var theText = alleSeiten[firstMaintext].pageItems.item("MaintextFrame").texts[0].parentStory.textContainers[a].texts[0];
var myIP = theText.characters.length-1;
theText.insertionPoints[myIP].contents = SpecialCharacters.FRAME_BREAK;
};


… jemand eine Idee?

Danke im Voraus und beste Grüße
Stephan
X

Jeder Rahmen einer Textflusskette am Ende mit SpecialCharacters.Frame_BREAK?

Marc Sidon
Beiträge gesamt: 262

30. Jul 2019, 11:17
Beitrag # 2 von 3
Beitrag ID: #571255
Bewertung:
(2012 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hall Stephan,

anbei schon mal ein etwas verbesserter Entwurf.
Bei einem Zeilenumbruch, muss dieser durch ein FRAME_BREAK ersetzt werden.
Was allerdings etwas schwieriger ist, ist wenn das letzte Wort eines Textrahmens umgebrochen wird. Denn wenn man dort ein FRAME_BREAK einfügt, werden es ja zwei Worte und demnach gibt es keinen Bindestrich mehr.
In dem Skript wird demnach VOR einem umgebrochenen Wort, ein FRAME_BREAK eingefügt.

Ich habe auch eine IDML angehängt, mit der ich getestet habe.

Code
var myDoc = app.activeDocument;  
var firstMaintext = 0;
var thePages = myDoc.pages;

for (a = 0; a < thePages.length; a++) {
var thePage = thePages[a];

// Hier wird erstmal ein Textrahmen geholt,
// der das Label "MaintextFrame" hat.

var theTextFrame = null;
for (var i=0; i<thePage.textFrames.length; i++) {
var tmpTextFrame = thePage.textFrames[i];
if (tmpTextFrame.label == "MaintextFrame") {
theTextFrame = tmpTextFrame;
break;
}
}

if (theTextFrame != null) {
var theTextContainers = textFrame.parentStory.textContainers;

for (var b=0; b<theTextContainers.length; b++) {
var theTextContainer = theTextContainers[b];
if (theTextContainer.nextTextFrame == null)
break;

var theText = theTextContainer.texts.firstItem();
var theLastChar = theText.characters.lastItem();
var theLastCharContents = theLastChar.contents;

// Falls das letzte Zeichen bereits ein FRAME_BREAK ist,
// passiert gar nichts.
if (theLastCharContents != SpecialCharacters.FRAME_BREAK) {
var theLastCharCode = theLastCharContents.charCodeAt(0);
// Wenn es ein Zeilenumbruch ist,
// wird dieser ersetzt durch ein FRAME_BREAK
if (theLastCharCode == 13) {
theLastChar.contents = SpecialCharacters.FRAME_BREAK;
} else {
var theLastWord = theText.words.lastItem();
if (theLastWord.parentTextFrames.length > 1) {
// Wenn das Wort umgebrochen wird,
// (also zwei ParentTextFrames hat)
// wird VOR dem Wort ein FRAME_BREAK eingefügt.
var thePreviousIP = theLastWord.insertionPoints.firstItem();
thePreviousIP.contents = SpecialCharacters.FRAME_BREAK;
} else {
// Ansonsten wird ein FRAME_BREAK hinzugefügt.
var theNextIP = theLastChar.insertionPoints.lastItem();
theNextIP.contents = SpecialCharacters.FRAME_BREAK;
}
}
}
}
}
}


Gruß,
Marc


als Antwort auf: [#571252]
Anhang:
FrameBreakInTextrahmen.idml (31.1 KB)

Jeder Rahmen einer Textflusskette am Ende mit SpecialCharacters.Frame_BREAK?

pixelstaub
Beiträge gesamt: 128

30. Jul 2019, 11:34
Beitrag # 3 von 3
Beitrag ID: #571256
Bewertung:
(2005 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Marc,

wow, danke Dir! In Zeile 21 müsste es lediglich "theTextFrame" statt "textFrame" heißen, ansonsten funktioniert es prima!

Abermals besten Dank und gute Grüße
Stephan


als Antwort auf: [#571255]

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
17.04.2024

Online
Mittwoch, 17. Apr. 2024, 10.00 - 10.30 Uhr

Webinar

Komplizierte, kleinteilige Aufträge; alles sehr speziell; seit Jahren bewährte Prozesse – da können wir nichts standardisieren und automatisieren! Das sagen viele Großformatdrucker – aber stimmt das wirklich, ist dem tatsächlich so? Günther Business Solutions und Impressed treten in einem Webinar den Gegenbeweis an. Experten beider Unternehmen zeigen, wie Großformatdrucker vom Einsatz zweier bewährter Lösungen profitieren können: • von advanter print+sign von Günther Business Solutions, dem ERP-System für den Großformatdruck, dass alle Phasen der Wertschöpfung im Large Format Printing abdeckt • von Impressed Workflow Server, der smarten PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt Über die Kombination beider Lösungen können Großformatdrucker ihre Prozesse mit modernen Workflows Schritt für Schritt automatisieren – und so zügig deutliche Zeit- und Kosteneinsparungen realisieren. Das Webinar sollten Sie sich nicht entgehen lassen – damit Sie keine Effizienzpotenziale mehr liegen lassen. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Ja

Organisator: Impressed / Günther Business Solutions

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

Und es geht doch: Automatisierung im Großformatdruck!