[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Kastentext per Script in den Lauftext verschieben

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

Kastentext per Script in den Lauftext verschieben

allora
Beiträge gesamt: 47

18. Jul 2012, 12:00
Beitrag # 1 von 25
Bewertung:
(9318 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo!

Ich muss für die Neuauflage eines Buches eine Wordvorlage (mit den entsprechenden Formatvorlagen) der vorangegangenen Auflage zur Verfügung stellen, will heißen aus dem Indesign alles ins Word kopieren. Das klappt mit einiger Nachbearbeitung halbwegs gut. Allerdings kommen auch gruppierte Kästen vor (verankert und mit eigenem Objektformat). Diese werden beim Kopieren nicht mitgenommen. Ist es möglich, diesen Kastentext per Skript in den Lauftext zu integrieren (mit einer Absatzlinie vor und danach getrennt) und den Kasten zu löschen?

Schönen Gruß
Anita
X

Kastentext per Script in den Lauftext verschieben

Martin Fischer
  
Beiträge gesamt: 12783

18. Jul 2012, 12:49
Beitrag # 2 von 25
Beitrag ID: #498202
Bewertung:
(9285 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Anita,

in Text aus verankerten Textrahmen auslesen und im Fließtext einfügen wäre ein Ansatz, wie man es machen könnte.


als Antwort auf: [#498196]

Kastentext per Script in den Lauftext verschieben

allora
Beiträge gesamt: 47

18. Jul 2012, 13:23
Beitrag # 3 von 25
Beitrag ID: #498207
Bewertung:
(9257 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke Martin,
schien vielversprechend, funktioniert aber soo leider bei mir nicht. Da ich mich mit Skripts nicht wirklich auskenne und gerade Mal die Namen (in diesem Fall des Objektstils - oder wäre mehr gefragt gewesen?) abändern kann, weiß ich nicht, wie ich es für meine Bedürfnisse adaptieren müsste.
Hilfreich wäre aber auch eine Lösung, bei der man die Gruppierung aus Kastentitel + Kastenlauftext zu einem einfachen Kasten umwandelt, der dann beim Kopieren ins Word-Dokument wieder mitginge ...

Hier eine Ansicht des Kastentyps: http://www.sendspace.com/file/5htbd9

Vielen Dank
LG
Anita


als Antwort auf: [#498202]

Kastentext per Script in den Lauftext verschieben

Martin Fischer
  
Beiträge gesamt: 12783

18. Jul 2012, 13:32
Beitrag # 4 von 25
Beitrag ID: #498208
Bewertung:
(9252 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Anita,

ich sprach von einem Ansatz, nicht von einer fertigen, allgemeinen Lösung.

Ich kann momentan den Aufwand nicht leisten, die konkreten Bedingungen zu erfragen/ermitteln und eine speziell angepasste Version zu liefern.

Das o.g. Skript bearbeitet nur verankerte Textrahmen mit dem zugewiesenen Objektstil 'Marginalie'. Möglicherweise benötigst Du diese Einschränkung nicht.

Code
if (app.selection.length >= 0 && (app.selection[0].hasOwnProperty ('baseline') || app.selection[0].constructor.name == 'TextFrame') )   
{
var tf = app.selection[0].parentStory.textFrames;
for (var i = tf.length-1; i >= 0; i--)
{
// if (tf[i].appliedObjectStyle.name == 'Marginalie') // prüfe zugewiesenen Objektstil
// {

if (tf[i].texts.firstItem().characters.lastItem().contents != '\r') // wenn das letzte Zeichen im verankerten Textrahmen keine Absatzschaltung ist, dann füge am Ende eine ein
tf[i].texts.firstItem().insertionPoints.lastItem().contents = '\r';
tf[i].texts.firstItem().move(LocationOptions.AT_BEGINNING, tf[i].parent.paragraphs.firstItem()); // verschiebe den Inhalt des verankerten Textrahmens (mit der Absatzmarke am Ende) an den Anfang des Absatzes, in dem er steht
tf[i].remove(); // lösche den verankerten Textrahmen.
}
//}
}



als Antwort auf: [#498207]
(Dieser Beitrag wurde von Martin Fischer am 18. Jul 2012, 13:34 geändert)

Kastentext per Script in den Lauftext verschieben

allora
Beiträge gesamt: 47

18. Jul 2012, 13:48
Beitrag # 5 von 25
Beitrag ID: #498209
Bewertung:
(9232 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich weiß, vielen Dank trotzdem. Das Problem scheinen die gruppierten Kästen zu sein. Bei den einfachen funktioniert dein Skript auch bei mir hervorragend.

Schönen Gruß
Anita


als Antwort auf: [#498208]

Kastentext per Script in den Lauftext verschieben

Hans Haesler
  
Beiträge gesamt: 5826

18. Jul 2012, 21:40
Beitrag # 6 von 25
Beitrag ID: #498257
Bewertung:
(9165 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Anita,

sende mir doch bitte ein Musterdokument. Mit klaren Angaben, welche Aktionen durchgeführt werden sollen (vorher / nachher).
Dann werde ich versuchen, eine Lösung zu finden.

Besten Dank im voraus.

Gruss, Hans


als Antwort auf: [#498209]
(Dieser Beitrag wurde von Hans Haesler am 18. Jul 2012, 21:40 geändert)

Kastentext per Script in den Lauftext verschieben

Hans Haesler
  
Beiträge gesamt: 5826

25. Jul 2012, 22:07
Beitrag # 7 von 25
Beitrag ID: #498570
Bewertung:
(9060 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Anita,

ich bedanke mich für das Muster-Dokument. Weil es nicht eilig war (das aktuelle Buch hattest Du händisch erledigt), habe ich mich erst jetzt mit Deinem Problem befasst.

Und das Script ist noch nicht bereit, denn ich hatte eine Eingebung, wie man den Kasten aus einem Stück anfertigen könnte. :-) Siehe den Anhang "Kasten_einteilig.png".

Ich habe Dir per PM den Downloadlink zu einem InDesign-Dokument gesandt, in welchem die Rahmen greifbar und mit Screenshots der Einstellungen (Absatzlinien, Textrahmenoptionen, Einzüge usw.) umgeben sind.

Frage: Ist es jetzt noch notwendig, eine Scriptlösung zu entwickeln?

Gruss, Hans


als Antwort auf: [#498257]
Anhang:
Kasten_einteilig.png (43.3 KB)

Kastentext per Script in den Lauftext verschieben

allora
Beiträge gesamt: 47

26. Jul 2012, 14:18
Beitrag # 8 von 25
Beitrag ID: #498600
Bewertung:
(9004 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
danke für deine geniale Idee des einteiligen Kastens! Damit ist das Skript nicht mehr notwendig. (außer es ist dir waaahnsinnig laaangweilig, dann nehm ich's gerne und kann damit die bereits gesetzten Bücher bearbeiten ;-))

LG
Anita


als Antwort auf: [#498570]

Kastentext per Script in den Lauftext verschieben

Hans Haesler
  
Beiträge gesamt: 5826

26. Jul 2012, 16:01
Beitrag # 9 von 25
Beitrag ID: #498604
Bewertung:
(8975 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Anita,

bitteschön. Aber "laaangweilig"? Was ist das? ;-)

Ich werde dennoch versuchen, das Script zu schreiben.
Wird nicht einfach sein, weil die Verankerung gelöst werden muss, damit die Gruppierung aufgehoben werden kann.

Gruss, Hans


als Antwort auf: [#498600]

Kastentext per Script in den Lauftext verschieben

Hans Haesler
  
Beiträge gesamt: 5826

27. Jul 2012, 09:03
Beitrag # 10 von 25
Beitrag ID: #498625
Bewertung:
(8915 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Leute,

Kai Rübsamen macht mich darauf aufmerksam, dass er mir kürzlich ein Dokument zugestellt hatte, in welchem derselbe Trick mit der gepunkteten Absatzlinie verwendet wird.

Ich war ihm behilflich beim Erstellen eines Scripts, welches ähnlich wie bei Anitas Problem eine verankerte Gruppe aufheben und den Text in einen der Rahmen kopieren sollte.

Eigentlich hatte ich damals keine Zeit, um mich gründlich damit zu befassen, doch ich versuchte, aus Gefälligkeit, eine Lösung zu finden. Konzentrierte mich aber aufs Lösen aus der Verankerung und das Zusammenführen der Texte.

Und so verpasste ich es, die Konstruktion auf der Arbeitsfläche zu untersuchen, in welcher das Abrunden der Ecken anders gelöst war, als beim verankerten Original (bei welchem ein Rahmen ohne Inhalt verwendet wurde). Das holte ich nun nach (siehe Screenshot "abgerundete_Ecken.png").

Fazit: "Wer hat's erfunden?" – "Der Kai!" :-)

Gruss, Hans


als Antwort auf: [#498604]
Anhang:
abgerundete_Ecken.png (29.2 KB)

Kastentext per Script in den Lauftext verschieben

Kai Rübsamen
Beiträge gesamt: 4684

27. Jul 2012, 10:20
Beitrag # 11 von 25
Beitrag ID: #498631
Bewertung:
(8891 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

ich hab es sicherlich nicht erfunden, Adobe wars ;-) . Von Zeit zu Zeit sieht man solche Lösungen auch auf den Usergroup-Treffen und ist dann erstaunt, dass doch alle ihre Kästchen mühsam mit Gruppen zusammenbauen.

Gerade wenn Factboxen noch einmal export werden sollen (als Word oder EPUB) ist es sehr wichtig, dass alles in einem Kasten passiert.

Während mein Beispiel mit 2 Absatzlinien funktioniert, hatte ich Anitas Beispiel mit einer weiteren Absatzlinie oben am Folgeabsatz gelöst. Im Rahmen eines Objektformats mit angehakter Option "Nächstes Format" sind damit auch oben rund, dann gerade mit zusätzlichem Abschluß durch Strich möglich.


als Antwort auf: [#498625]
(Dieser Beitrag wurde von Kai Rübsamen am 27. Jul 2012, 10:23 geändert)

Kastentext per Script in den Lauftext verschieben

Hans Haesler
  
Beiträge gesamt: 5826

27. Jul 2012, 13:27
Beitrag # 12 von 25
Beitrag ID: #498645
Bewertung:
(8849 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Anita,

und hier ist schon mal eine erste Version, welche den Kasten vereinfacht.

Code
//KastenVereinfachen_501d.js 
//© 27.07.12 / Hans Haesler, Châtelard 52, CH-1018 Lausanne
//DESCRIPTION:Gruppierte, verankerte Rahmen in einfachen Kasten verwandeln

// vorbeugenderweise das Anzeigen von Dialogen aktivieren
app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll;

// prüfen, ob ein Dokument geöffnet ist
if (app.documents.length == 0) {
alert ("Es ist kein Dokument offen.", "Achtung");
exit();
}

// alle Rahmen des Dokuments
var allFrames = app.documents[0].allPageItems;
for (var f=(allFrames.length)-1; f>-1; f--) {
// prüfen, ob verankert ...
if (allFrames[f].parent == "[object Character]") {
// ... und ob Gruppe
if (allFrames[f].constructor.name == "Group") {
var curGroup = allFrames[f];
// die Rahmen der Gruppe
var curFrames = curGroup.allPageItems;
// den Text schwarz einfärben, Grundlinienversatz null, Einzug null,
// Abstand danach, Absatzlinie einfügen
curFrames[0].parentStory.paragraphs[0].properties = {fillColor:"Black", baselineShift:0, leftIndent:0};
curFrames[0].parentStory.paragraphs[0].properties = {spaceAfter:"0c3"};
curFrames[0].parentStory.paragraphs[0].properties = {ruleBelow:true, ruleBelowLineWeight:0.5, ruleBelowOffset:"0c3"};
// prüfen, ob ein Return vorhanden
var endChar0 = curFrames[0].parentStory.characters.item(-1).contents;
if (endChar0 != "\r") {
curFrames[0].parentStory.insertionPoints.item(-1).contents = "\r";
}
// den Text verschieben
curFrames[0].parentStory.move(LocationOptions.AT_BEGINNING, curFrames[1].parentStory.insertionPoints.item(0));
// die Position des Ankers speichern
var gPos = curGroup.parent.insertionPoints[0];
// die Verankerung lösen
curGroup.anchoredObjectSettings.anchoredPosition = AnchorPosition.anchored;
curGroup.anchoredObjectSettings.releaseAnchoredObject();
// die Gruppe auflösen
curGroup.ungroup();
// den einen Rahmen entfernen
curFrames[0].remove();
// den verbliebenen Rahmen wieder verankern
app.selection = curFrames[1];
app.cut();
app.selection = gPos;
app.paste();
}
}
}

Und mit dieser Variante wird der Text in den Lauftext veschoben und der Kasten gelöscht:

Code
//KastenTextVerschieben_501d.js 
//© 27.07.12 / Hans Haesler, Châtelard 52, CH-1018 Lausanne
//DESCRIPTION:Den Text der verankerten Gruppe in den Lauftext verschieben

// vorbeugenderweise das Anzeigen von Dialogen aktivieren
app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll;

// prüfen, ob ein Dokument geöffnet ist
if (app.documents.length == 0) {
alert ("Es ist kein Dokument offen.", "Achtung");
exit();
}

// alle Rahmen des Dokuments
var allFrames = app.documents[0].allPageItems;
for (var f=(allFrames.length)-1; f>-1; f--) {
// prüfen, ob verankert ...
if (allFrames[f].parent == "[object Character]") {
// ... und ob Gruppe
if (allFrames[f].constructor.name == "Group") {
var curGroup = allFrames[f];
// die Rahmen der Gruppe
var curFrames = curGroup.allPageItems;
// den Text schwarz einfärben, Grundlinienversatz null, Einzüge,
// Abstand davor, Abstand danach, Absatzlinien einfügen
curFrames[0].parentStory.paragraphs[0].properties = {fillColor:"Black", baselineShift:0, leftIndent:"0c7", rightIndent:"0c7"};
curFrames[0].parentStory.paragraphs[0].properties = {spaceBefore:"1c0", spaceAfter:"0c8"};
curFrames[0].parentStory.paragraphs[0].properties = {ruleAbove:true, ruleAboveLineWeight:0.5, ruleAboveOffset:"0c10.5"};
curFrames[0].parentStory.paragraphs[0].properties = {ruleBelow:true, ruleBelowLineWeight:0.5, ruleBelowOffset:"0c5"};
// Einzüge, Abstand danach, Absatzlinien einfügen
curFrames[1].parentStory.properties = {leftIndent:"0c7", rightIndent:"0c7"};
curFrames[1].parentStory.paragraphs.item(-1).properties = {spaceAfter:"1c6"};
curFrames[1].parentStory.paragraphs.item(-1).properties = {ruleBelow:true, ruleBelowLineWeight:0.5, ruleBelowOffset:"0c4"};
// prüfen, ob ein Return vorhanden
var endChar0 = curFrames[0].parentStory.characters.item(-1).contents;
if (endChar0 != "\r") {
curFrames[0].parentStory.insertionPoints.item(-1).contents = "\r";
}
var endChar1 = curFrames[1].parentStory.characters.item(-1).contents;
if (endChar1 != "\r") {
curFrames[1].parentStory.insertionPoints.item(-1).contents = "\r";
}
// die Position des Ankers speichern
var gPos = curGroup.parent.insertionPoints[0];
// den Text verschieben
curFrames[0].parentStory.move(LocationOptions.AT_BEGINNING, gPos);
curFrames[1].parentStory.move(LocationOptions.AT_BEGINNING, gPos);
// die Gruppe entfernen
curGroup.remove();
}
}
}

Bei Bedarf kannst Du die Werte der Abstände (davor, danach) anpassen.

Gruss, Hans


als Antwort auf: [#498600]

Kastentext per Script in den Lauftext verschieben

Uwe Laubender
Beiträge gesamt: 5319

27. Jul 2012, 13:56
Beitrag # 13 von 25
Beitrag ID: #498647
Bewertung:
(8839 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Hans!

Wieder etwas dazu gelernt: ich hätte jetzt nach dem "constructor.name" des "parent" gefragt oder auf "typeof" geprüft bei der Zeile:

Code
allFrames[f].parent == "[object Character]" 


Aber das kann man offenbar auch direkter machen. Gibt's da einen bestimmten Grund? Oder benutzt Du das nur der Kürze wegen?

Weiter unten im Code prüfst Du ja zur Abwechslung mal mit "constructor.name".


als Antwort auf: [#498645]

Kastentext per Script in den Lauftext verschieben

Hans Haesler
  
Beiträge gesamt: 5826

27. Jul 2012, 14:08
Beitrag # 14 von 25
Beitrag ID: #498648
Bewertung:
(8829 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

Du kannst auch ...

Code
if (allFrames[f].parent instanceof Character) { 

... benutzen (wie es ein Dave Saunders tut).

Die von mir gewählte Form habe ich durch eine Abfrage des Objekts bekommen und übernommen. Die Kürze (oder Länge) ist mir nicht so wichtig.

Gruss, Hans


als Antwort auf: [#498647]

Kastentext per Script in den Lauftext verschieben

Uwe Laubender
Beiträge gesamt: 5319

27. Jul 2012, 15:18
Beitrag # 15 von 25
Beitrag ID: #498654
Bewertung:
(8791 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Hans!

Richtig. "instanceof" gibt's ja auch noch…

Es gab mal eine "wilde" Diskussion im Adobe Scripting Forum um die Vorzüge von "instanceof" gegenüber "constructor.name".

Endete, glaub' ich, mit unentschieden oder mit:
"Nach Crockford wäre aber das und das geeigneter, weil…"

Aber Genaueres weiss ich nicht mehr.


als Antwort auf: [#498648]
X

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
14.05.2024

Online
Dienstag, 14. Mai 2024, 10.00 - 10.30 Uhr

Webinar

Prozessoptimierung ist ein Teamsport! Keine Software und keine Maschine allein kann Ihnen helfen, die Effizienzpotenziale Ihres Betriebes maximal auszuschöpfen. Von der Auftragsannahme über die Vorstufe und den Druck bis hin zur Weiterverarbeitung – alles muss optimal ineinandergreifen. Apropos Weiterverarbeitung – in vielen Druckbetrieben fristet sie in Sachen Prozessoptimierung immer noch ein Schattendasein. Dabei liegen hier mittlerweile die größten Einsparpotenziale! In einem Webinar von Horizon und Impressed erfahren Sie, wie Sie diese Einsparungen realisieren können. Horizon, bekannt für innovative Lösungen in der Druckweiterverarbeitung, bietet mit iCE LiNK eine Workflowlösung für die Weiterverarbeitung. iCE LiNK überwacht, visualisiert und analysiert Produktionsabläufe und unterstützt bei der Wartung – damit immer alles reibungslos läuft. Den gleichen Anspruch hat der von Impressed entwickelte Impressed Workflow Server – er ist die smarte PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt. Im Webinar zeigen Ihnen die Experten von Horizon und Impressed, wie beide Lösungen im Team die Effizienz und Produktivität Ihres Betriebes steigern können. 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 / Horizon

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

Einsparpotenziale in der Weiterverarbeitung
Veranstaltungen
16.05.2024

Online
Donnerstag, 16. Mai 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

Nein

Organisator: Impressed / Günther Business Solutions

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

Und es geht doch: Automatisierung im Großformatdruck!