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

29. Jul 2019, 16:20
Beitrag # 1 von 3
Bewertung:
(1309 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:
(1257 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
------------------------------------------

modernmediasidon
Erstellung von InDesign Scripts


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

Jeder Rahmen einer Textflusskette am Ende mit SpecialCharacters.Frame_BREAK?

pixelstaub
Beiträge gesamt: 125

30. Jul 2019, 11:34
Beitrag # 3 von 3
Beitrag ID: #571256
Bewertung:
(1250 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
07.02.2020 - 11.09.2020

Digicomp Academy AG, 8005 Zürich
Freitag, 07. Feb. 2020, 13.00 Uhr - Freitag, 11. Sept. 2020, 12.00 Uhr

Lehrgang

Bilden Sie sich zum zertifizierten Publishing-Multimedia-Profi aus. Neben Fotografie und Video befassen Sie sich mit der Medienproduktion, digitalen Publikationen und dem Webdesign für Desktop- und mobile Endgeräte. Mit dem Abschluss «Publisher Professional – Profil «Multimedia» verliehen durch die Digicomp Academy AG, bestätigen Sie Ihre Praxiserfahrungen und Qualifizierung in den genannten Themengebieten gegenüber Ihrem Arbeitgeber sowie Ihren Kunden.

Preis: CHF 10'500.-
Dauer: 30 Tage (ca. 210 Lektionen) – Unterricht findet jeweils am Freitag von 13 - 19 Uhr und Samstag von 09 - 17 Uhr statt

Nein

Organisator: Digicomp Academy AG

Kontaktinformation: Isil Günalp, E-Mailisil.guenalp AT digicomp DOT ch

https://www.digicomp.ch/weiterbildung/software-anwendungs-trainings/adobe-trainings/publishing-lehrgaenge/lehrgang-publisher-professional-profil-multimedia

Veranstaltungen
22.02.2020 - 04.07.2020

Lehrgang zielgerichtet auf die Zertifizierung zum Publisher Basic

Schulungsraum PubliCollege, Kronenhalde 9d, 3400 Burgdorf
Samstag, 22. Feb. 2020, 13.14 Uhr - Samstag, 04. Juli 2020, 13.15 Uhr

Projektseminar/Lehrgang

Ziele In der Medienproduktion unter Einbezug der aktuellen Publishing-Programme mitarbeiten. Voraussetzungen Sie möchten gestalterisch tätig sein und eigene grafische Ideen kompetent entwickeln sowie umsetzen; Medienproduktionen professionell planen und ausführen. Kompetenzen Nach Abschluss dieses Lehrgangs können Sie Printpublikationen aller Art von der Gestaltung über die Umsetzung bis zu druckfertige PDFs erstellen. Sie sind fähig, CI/CD-Vorgaben umzusetzen. Sie lernen die Grundlagen der grafischen Gestaltung kennen und setzen diese mit Adobe Photoshop, InDesign und Illustrator effizient um.

15 Halbtage, jeweils am Samstag von 08.30 bis 14 Uhr im Kursraum des PubliCollege, 3400 Burgdorf


Daten
Samstag, 22.2., 29.2., 14.3., 21.3., 28.3., 4.4., 25.4., 2.5., 9.5., 16.5., 6.6., 13.6., 20.6., 27.6., 4.7. 2020
Reservedatum am 23.5. 2020

Ja

Organisator: PubliCollege GmbH, 3400 Burgdorf

Kontaktinformation: Beat Kipfer, E-Mailinfo AT publicollege DOT ch

https://www.publicollege.ch/kursangebote/20-publisher-basic

Neuste Foreneinträge


Acrobat Pro Textfarbe Javascript ändert sich erst nach Klick ins Formularfeld

Oehlbach DVI-D Dual-Link Kabel - 7,5 + 2 x 10 Meter

"Temporäre Aktivierung abgelaufen"

Script gesucht um Seiten als JPG zu exportieren und Dateinamen aus EXIF Information des Bildes

PDF: QR-Code mit Bild ersetzen

Umstellung von Mac auf Windows verhindern

CMS-Linkliste

Schatten auf untere Textebenen nach 3D-Drehung

aufgerasteter Text bei Print on Demand

«Stile erstellen»
medienjobs