Einem platzierten Bild, das versehentlich auf Endformat (also ohne Beschnitt) angelegt ist, soll virtueller Beschnitt durch Mehrfach-duplizierung und Spiegelung der Bild-Duplikate hinzugefügt werden. Also besteht dann am jeweiligen Übergang der Kanten eine Pixelwiederholung. In den Dokumenteinstellungen wird automatisch der Beschnitt mit 3 mm aktiviert. Dann ließe sich das Ergebnis z.B. als PDF-Datei oder in einem anderen gewünschten Format speichern. Das geöffnete InDesign-Dokument hat lediglich eine Seite und beinhaltet lediglich das darin platzierte Bild, welches angewählt sein soll.
Beim aktuellen Stand meines Skriptversuches hakt es aber bei der Gruppierung der bis dahin nebeneinander erzeugten 3 Bildrahmen.
Hat jemand von euch einen Tipp, wie ich das Skript für CS3 bis CS5 lauffähig bekomme?
Vorige Versuche mit dem DUPLICATE-Befehl sind leider weniger erfolgreich gewesen.
Hier der aktuelle Skripttext:
Virtuelle Beschnittzugabe durch Mehrfachduplizierung und Spiegelung
Group add (groupItems: Array of PageItem[, layer: Layer][, at: LocationOptions=LocationOptions.UNKNOWN][, reference: varies][, withProperties: Object]) Creates a new Group. Parameter Type Description groupItems Array of PageItem The objects to group. layer Layer The layer on which to create the Group. (Optional) at LocationOptions: LocationOptions.BEFORE LocationOptions.AFTER LocationOptions.AT_END LocationOptions.AT_BEGINNING LocationOptions.UNKNOWN The location at which to insert the Group relative to the reference object or within the container object. (Optional) (default: LocationOptions.UNKNOWN) reference Document Layer MasterSpread Page PageItem Spread The reference object. Note: Required when the at parameter is before or after. Can accept: Document, Spread, MasterSpread, Page, Layer or PageItem. (Optional) withProperties Object Initial values for properties of the new Group (Optional)
Außerdem empfehle ich Dir, dass Du Dich mal mit der Sichtbarkeit von Variablen und Errorhandling beschäftigst.
Wenn es Dir möglich ist, solltest Du auch noch einen Blick in das Buch von Grant Gamble werfen. ;-)
Da habe ich gleich zwei Verständnisprobleme: 1. Was verstehst unter Dokumentrahmen Den Druckbogen? 2. Und was ist eine Klassifizierungssache?
Wenn Du Druckbogen meinst: PageItems dürfen sich auch außerhalb eines Druckbogen befinden.
Ich habe mal versucht, Dein Skript mit meinen Mitteln nachzubauen, kann aber ohne eine Beispieldatei und eine Datei mit dem gewünschten Ergebnis nicht beurteilen, ob das Skript das macht, was Du möchtest.
recht herzlichen Dank für Deine ganze Arbeit. Zwar lief es nicht so wie gewünscht (Meldung „Fehler bei der Größenermittlung“), aber Dein Ansatz hat mich inspiriert auch mal quer zu denken und nach einer simpleren Lösung zu suchen. Sicher lässt sich das Ganze professioneller und auch mit weniger „Code-Menge“ umsetzen, aber so weit bin ich noch lange nicht.
Bin aber sehr glücklich mit meiner eigenwilligen, unter meinen Bedingungen funktionierenden Lösung und hoffe, dass mein Skript auch einigen anderen InDesign-Nutzern irgendwann mal aus der Patsche hilft. Man sollte aber schon abwägen, bei welchem Bildmaterial man dieses Javaskript einsetzen kann. Denn bei Bildern mit Diagonalen am Bildrand ist das nicht sehr sinnvoll. Aber in der Not...
Hier mein Code:
Werner, Dir noch mal ein ganz fettes DANKESCHÖN!
Beste Grüße an den Kenner Thomas
Virtuelle Beschnittzugabe durch Mehrfachduplizierung und Spiegelung
Ich möchte auch noch eben Deine Fragen beantworten.
Mit Dokumentrahmen meinte ich tatsächlich die Begrenzung des Druckbogens.
Unter Klassifizierung würde ich eine Zuordnung eines bestimmten Skripting-Objektes zu einem eingrenzenden Oberbegriff in der Javaskript- bzw. Dokument-Struktur verstehen. Also Begrifflichkeiten wie Document, Page, Spread, String, Text usw.
Mit der Fehlerbehandlung werde ich mich noch mal eingehend befassen müssen, genauso wie mit dem Skripten von Werte-Abfragen und Eingabeaufforderungen.
Beim Buch von G.F. vermisse ich einige Suchbegriffe im Index, was mir als Leser das Auffinden von bestimmten Inhalten deutlich erschwert.
Bis bald Thomas
Virtuelle Beschnittzugabe durch Mehrfachduplizierung und Spiegelung
Also die Eltern (Parent) eines Objektes: Parent.object.
Eine gute Idee!
Und nicht vergessen, das ist eine Fehler_behandlungs_methode und keine Fehler_ignorier_methode.
So etwas
ist wie die Abschaffung der Polizei zur Senkung der Kriminalitätsrate!
Das liegt wohl daran, das das Buch ein [i]Lehrbuch und kein Nachschlagewerk ist. Grant Gamble führt einen [b]systematisch an die Programmierung von Skripten heran und untermauert alles mit nützlichen Beispielen. Dabei vergisst er auch die Grundlagen der Grundlagen der Programmierung nicht, beschäftigt sich mit dem ESTK und fast jeder Abschnitt endet mit [b]Try it yorself.
Zum Nachschlagen verwendest Du besser den [i]Objktmodell Viewer im ESTK oder einen Extrakt aus der [i]TLB, wie Du ihn zum Beispiel bei Jongware findest.
Da habe ich tatsächlich am Schluss einen Fehler eingebaut. Dieser Fehler zeigt wie wichtig eine saubere Schreibweise beim Progammieren ist.
Siehst Du das Semikolon? Es beendet direkt den Vergleich und führt
[b]ohne Berücksichtigung des Vergleichsergebnisses aus.
Solch einen Fehler findet man übrigens sehr leicht durch setzten eines Unterbrecherpunktes auf den Funktionsaufruf!
Aber schlimmer! [i]Vergleich und [i]throw ist komplett überflüssig, denn das [i]Throw in der Funktion [b]loadNeededDimensions() führt direkt in das Catch der aufrufenden Routine!
Probiere es aus, in dem Du einen Fehler in die Funktion einbaust.
Entschuldige bitte diesen Fehler.
Richtig solle es so aussehen:
Und viel Erfolg weiterhin!
Noch etwas: Der BBCode-Parser der Forumsoftware hat in diesem Beitrag wohl keine rechte Lust mehr gehabt, denn die meisten Schriftauszeichnungen werden nicht mehr richt interpretiert!
Ich möchte noch mal kurz auf das Buch von Grant Gamble eingehen: Eine Auslassung möchte ich bemängeln. Multistatus-Objekte (MSOs) werden überhaupt nicht behandelt…
Schade. Alle Tiefen und Untiefen von MSOs auszuloten ist gar nicht so einfach. Aber vielleicht war damals die Zeit noch nicht reif dafür (InDesign CS5). Für heutige Anwendungen, gerade im Hinblick auf's iPad-Publishing, aber ein echter Gewinn!
Die gesamte Scripting-Community ist auf jeden Fall Grant zu Dank verpflichtet, da er der erste war, der gezeigt hat (oder zumindest der erste, der es veröffentlicht hat), wie man einen bestimmten Objekttyp aus einer Übermenge ermitteln kann.
Stichwort: "Resolve the object specifier"
Hier ein Beispiel mit der Objektoberklasse PageItems:
Einfach, aber genial…
Ich jedenfalls empfinde Grants Buch als äußerst spannend. Fast wie ein guter Krimi ;-) ***** Mit herzlichem Gruß, Uwe Laubender
Virtuelle Beschnittzugabe durch Mehrfachduplizierung und Spiegelung
na ja, ich finde, hier zählt der Inhalt. Außerden wäre ich der letzte, der so etwas beurteilen könnte. ;-) Nicht jeder, der gute InDesignskripts schreibt, muss ein guter Typograf sein, und vielleicht hat hat er ja das Werk selbst erstellt.
Das schwenkt hier zwar vom Thema ab, hat aber für alle InDesign-Dokumente Gültigkeit, die MSOs enthalten:
"myDoc.allPageItems" listet mitnichten alle Page Items eines Dokuments!
Page Items, die sich nicht innerhalb des aktiven (sichtbaren) Status eines MSOs befinden, werden von allPageItems nicht erfasst. ***** Mit herzlichem Gruß, Uwe Laubender
Virtuelle Beschnittzugabe durch Mehrfachduplizierung und Spiegelung