hilfdirselbst.ch
Facebook Twitter gamper-media

Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign » automatischer Textfluss

 



database
Beiträge: 144

24. Feb 2006, 11:00

Beitrag #1 von 4
Bewertung:

(4877 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

automatischer Textfluss


Hallo,

es gibt in ID ja die Möglichkeit des automatischen Textflusses. Ich habe eine Seite mit fünf Spalten und benötige hier diesen automatischen Textfluss d.h. ich bekomme das rote Kreuz für den Übersatz angezeigt und setzte mit gedrückter Umschalttase in der nächsten Spalte meinen Rahmen und bekomme dann dementprechend viele Rahmen und Seiten wie ich Text habe.

Soweit passt das ja auch alles. Aber hier die Schwierigkeit. Ich habe XMLs die ich einfließen lassen möchte und ich suche nach einer Möglichkeit diese einfließen zu lassen und automatisch werden diese oben beschriebenen Rahmen und Seiten erzeugt. Ohne das ich es noch einmal anfassen muss.
Benötige ich hierfür ein Script oder geht es auch so?

Vielen Dank schon einmal

P.S. ID CS2 und WINXP
Top

Martin Fischer  M  p
Beiträge: 9698

24. Feb 2006, 13:42

Beitrag #2 von 4
Beitrag ID: #213800

Bewertung:

(4764 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

automatischer Textfluss


Es gibt ein Plugin namens InFlow.

Und es gibt eine Skriptfunktion von Dave Saunders: http://jsid.blogspot.com/...nction-snippets.html

Daraus ließe sich etwa folgendes Skript basteln, das - nach Start des Skripts - dann (eine) neue Seite(n) einfügt, wenn in dem Textfluß, in dem der Cursor steht, Übersatz ist.



Code
//AppendPagesIfStoryOverflows.jsx 
//
// thanks to Dave Saunders for the functions isText() and DumbRunPages()
// http://jsid.blogspot.com/2005/10/standard-methods-and-functions.html

Object.prototype.isText = function()
{
switch(this.constructor.name)
{
case "InsertionPoint":
case "Character":
case "Word":
case "TextStyleRange":
case "Line":
case "Paragraph":
case "TextColumn":
case "Text":
case "TextFrame":
return true;
default :
return false;
}
}

if ((app.documents.length> 0) && (app.selection.length > 0) && (app.selection[0].isText())) {
var aStory = app.selection[0].parentStory;
var aDoc = app.documents[0];

DumbRunPages(aDoc, aStory)
}
else {
alert("Fehler\rBitte Text auswählen.")
}

function DumbRunPages(theDoc, theStory) {
// What makes this "dumb" is that default master pages are used.
var uRuler = theDoc.viewPreferences.rulerOrigin;
theDoc.viewPreferences.rulerOrigin = RulerOrigin.spreadOrigin;
while (theStory.textFrames[-1].overflows) {
/*
// Original: Seite nach der letzten Dokumentseite einfügen
theDoc.documentPreferences.pagesPerDocument = theDoc.documentPreferences.pagesPerDocument + 1;
var backPage = theDoc.pages[-1];
*/

//alternativ: Seite nach der letzten Textrahmenseite einfügen
var backPage = aDoc.pages.add(LocationOptions.after, aStory.textFrames[-1].parent)

app.activeWindow.activePage = backPage;
backPage.appliedMaster = theDoc.pages[-2].appliedMaster;
var myPbounds = backPage.bounds;
var myNewTF = backPage.textFrames.add();
if ((backPage.name % 2 == 1) || (!theDoc.documentPreferences.facingPages)) {
myNewTF.geometricBounds =
[myPbounds[0] + backPage.marginPreferences.top,
myPbounds[1] + backPage.marginPreferences.left,
myPbounds[2] - backPage.marginPreferences.bottom,
myPbounds[3] - backPage.marginPreferences.right];
} else {
myNewTF.geometricBounds =
[myPbounds[0] + backPage.marginPreferences.top,
myPbounds[1] + backPage.marginPreferences.right,
myPbounds[2] - backPage.marginPreferences.bottom,
myPbounds[3] - backPage.marginPreferences.left];
}
myNewTF.itemLayer = theStory.textFrames[-1].itemLayer;
myNewTF.previousTextFrame = theStory.textFrames[-1];
myNewTF.textFramePreferences.textColumnCount = backPage.marginPreferences.columnCount;
myNewTF.textFramePreferences.textColumnGutter = backPage.marginPreferences.columnGutter;
if (myNewTF.characters.length == 0){
theDoc.viewPreferences.rulerOrigin = uRuler;
alert("Permanently overset"); // This indicates a permanent overset condition so break out of loop
}
}
theDoc.viewPreferences.rulerOrigin = uRuler;
}



Martin Fischer

Skripte für InDesign im Skriptarchiv von HilfDirSelbst.ch

als Antwort auf: [#213731]

(Dieser Beitrag wurde von Martin Fischer am 3. Aug 2009, 08:52 geändert)
Top

database
Beiträge: 144

24. Feb 2006, 16:13

Beitrag #3 von 4
Beitrag ID: #213839

Bewertung:

(4752 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

automatischer Textfluss


Danke erstmal,

ich probiers mal aus.

Viele Grüße

als Antwort auf: [#213800] Top

Martin Fischer  M  p
Beiträge: 9698

22. Jan 2008, 05:38

Beitrag #4 von 4
Beitrag ID: #332434

Bewertung:

(3767 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

automatischer Textfluss


Hier die CS3-Version des obigen Skripts 'AppendPagesIfStoryOverflows.jsx':

Code
//AppendPagesIfStoryOverflows_CS3.jsx  
//
// thanks to Dave Saunders for the functions isText() and DumbRunPages()
// http://jsid.blogspot.com/2005/10/standard-methods-and-functions.html

Object.prototype.isText = function()
{
switch(this.constructor.name)
{
case "InsertionPoint":
case "Character":
case "Word":
case "TextStyleRange":
case "Line":
case "Paragraph":
case "TextColumn":
case "Text":
case "TextFrame":
return true;
default :
return false;
}
}

if ((app.documents.length> 0) && (app.selection.length > 0) && (app.selection[0].isText())) {
var aStory = app.selection[0].parentStory;
var aDoc = app.documents[0];

DumbRunPages(aDoc, aStory)
}
else {
alert("Fehler\rBitte Text auswählen.")
}

function DumbRunPages(theDoc, theStory) {
// What makes this "dumb" is that default master pages are used.
var uRuler = theDoc.viewPreferences.rulerOrigin;
theDoc.viewPreferences.rulerOrigin = RulerOrigin.spreadOrigin;
while (theStory.textContainers[theStory.textContainers.length-1].overflows) {
//Seite nach der letzten Textrahmenseite einfügen
var backPage = aDoc.pages.add(LocationOptions.after, aStory.textContainers[theStory.textContainers.length-1].parent)

app.activeWindow.activePage = backPage;
backPage.appliedMaster = theDoc.pages[-2].appliedMaster;
var myPbounds = backPage.bounds;
var myNewTF = backPage.textFrames.add();
if ( (!theDoc.documentPreferences.facingPages) || (backPage.side == PageSideOptions.rightHand) ) {
myNewTF.geometricBounds =
[myPbounds[0] + backPage.marginPreferences.top,
myPbounds[1] + backPage.marginPreferences.left,
myPbounds[2] - backPage.marginPreferences.bottom,
myPbounds[3] - backPage.marginPreferences.right];
} else {
myNewTF.geometricBounds =
[myPbounds[0] + backPage.marginPreferences.top,
myPbounds[1] + backPage.marginPreferences.right,
myPbounds[2] - backPage.marginPreferences.bottom,
myPbounds[3] - backPage.marginPreferences.left];
}
myNewTF.itemLayer = theStory.textContainers[theStory.textContainers.length-1].itemLayer;
myNewTF.previousTextFrame = theStory.textContainers[theStory.textContainers.length-1];
myNewTF.textFramePreferences.textColumnCount = backPage.marginPreferences.columnCount;
myNewTF.textFramePreferences.textColumnGutter = backPage.marginPreferences.columnGutter;
if (myNewTF.characters.length == 0){
theDoc.viewPreferences.rulerOrigin = uRuler;
alert("Permanently overset"); // This indicates a permanent overset condition so break out of loop
}
}
theDoc.viewPreferences.rulerOrigin = uRuler;
}



Martin Fischer

Skripte für InDesign im Skriptarchiv von HilfDirSelbst.ch

als Antwort auf: [#213800] Top


Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign » automatischer Textfluss


^