hilfdirselbst.ch
Facebook Twitter gamper-media

Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign Skriptwerkstatt » CS3 Javascript: Text in Zelle durch Bild ersetzen

 

« « 1 2 » »  


schlang
Beiträge: 54

3. Sep 2009, 14:58

Beitrag #1 von 18
Bewertung:

(3620 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

CS3 Javascript: Text in Zelle durch Bild ersetzen


Servus, wie kann ich einen beliebigen Text in einer Tabellenzelle durch ein Bild ersetzen? Das Bild kommt durch eine Pfadangabe, müsste also wohl erst noch platziert werden.

Danke schonmal!
Top

Martin Fischer  M  p
Beiträge: 9687

3. Sep 2009, 16:46

Beitrag #2 von 18
Beitrag ID: #407302

Bewertung:

(3582 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

CS3 Javascript: Text in Zelle durch Bild ersetzen


Hallo Herr Schlang,

vielleicht könnte Ihnen das Skript TextDurchBarcodeErsetzen.jsx von zaphodbeeblebroxx eine Orientierung bieten.


Martin Fischer

Skripte für InDesign im Skriptarchiv von HilfDirSelbst.ch

als Antwort auf: [#407273] Top

schlang
Beiträge: 54

3. Sep 2009, 23:16

Beitrag #3 von 18
Beitrag ID: #407335

Bewertung:

(3545 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

CS3 Javascript: Text in Zelle durch Bild ersetzen


Zitat Dieses Skript ist nur für Premium-Member sichtbar.


als Antwort auf: [#407302] Top

Martin Fischer  M  p
Beiträge: 9687

3. Sep 2009, 23:30

Beitrag #4 von 18
Beitrag ID: #407339

Bewertung:

(3536 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

CS3 Javascript: Text in Zelle durch Bild ersetzen


Ah, sorry.

Nun, Sie müssen den Text
a. finden,
b. löschen und dann
c. beim insertionPoints.firstItem() der Fundstelle den place()-Befehl ausführen.

Im place()-Befehl steht ein File-Objekt.

Etwa so:

Code
var myFile = File('~/Desktop/test.eps'); 
// ...
myResult[i].insertionPoints.firstItem().place(myFile);



Martin Fischer

Skripte für InDesign im Skriptarchiv von HilfDirSelbst.ch

als Antwort auf: [#407335] Top

ph p
Beiträge: 40

14. Dez 2009, 13:20

Beitrag #5 von 18
Beitrag ID: #427665

Bewertung:

(3215 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

CS3 Javascript: Text in Zelle durch Bild ersetzen


Hallo SkripterInnen,

das was schlang möchte, möchte ich auch:

In einer Tabelle stehende Dateinamen, mit dem Zeichenformat "Barcodeverweis" ausgezeichnet, sollen durch das entsprechende Bild ersetzt werden (als verankertes Objekt) – falls die Datei nicht vorliegt, soll der Dateiname stehen bleiben.
Der Rahmen des Bildes soll auf eine Breite von 20mm und eine Höhe von 10mm gebracht werden, da die Barcode-Dateien sämtlich zu groß sind. Und am besten würde dem neu erstellten Rahmen das Objektformat "Barcode" zugewiesen werden.

Ich wäre sehr gerne in der Lage, so ein Skript selbst zu schreiben. Aber ich bin es nicht. Mit meinen sehr bescheidenen Skriptkenntnissen und Blicken in diverse HDS-Skripte habe ich folgendes zusammengeschustert:

Code
// Barcode_ersetzer.jsx 

// Name des Zeichenformats, mit dem die Dateinamen ausgezeichnet sind
var BarcodeStyle="Barcodeverweis";

// Pfad des Verzeichnisses, in dem die Barcode-Dateien liegen
var myBarcodeDir = "/Test/TestBarCodes"

// Skript funktioniert nur bei geöffnetem Dokument
if (app.documents.length > 0) {

var myDoc = app.documents[0];

// Sucheinstellungen zurücksetzen
app.changeTextPreferences = NothingEnum.nothing;
app.findTextPreferences = NothingEnum.nothing;
app.findChangeTextOptions = NothingEnum.nothing;

// Sucheinstellungen: suche nach allen Stellen, an denen das Zeichenformat BarcodeStyle verwendet wird
app.findTextPreferences.properties={findWhat:"", appliedCharacterStyle:BarcodeStyle};
app.changeTextPreferences.properties={changeTo:""};
app.findChangeTextOptions.properties={includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, wholeWord:false}

var myResult = myDoc.findText();

// Gibt die Anzahl der gefundenen Stellen aus
alert("Es wurden " + myResult.length + " Dateinamen gefunden.");

// Schleife zum Ersetzen der Stellen (Dateinamen) durch die entsprechende Datei
for (n = myResult.length -1; n >= 0; n--) {
var foundFilename=myResult[n].contents;
try {
var myNewFrame = myResult[n].insertionPoints.firstItem().place(File(myBarcodeDir + "/" + foundFilename));
}
catch (e) {
alert("Fehler!\r" + myBarcodeDir + "/" + foundFilename + " konnte nicht platziert werden.");
myNewFrame = 0;
}

}

}

else {
alert("Kein Dokument geöffnet.\rDieses Skript funktioniert nur mit geöffneten Dokumenten. Bitte öffnen Sie eines und führen Sie das Skript erneut aus.");
}


Das findet die Dateinamen und setzt das entsprechende Bild davor. Mehr nicht. Und mehr gelang mir bisher auch einfach nicht. Ich scheitere schon an dem von Martin Fischer unter b aufgeführten Punkt (Fundergebnis löschen) – das nur um meine bescheidenen Skriptkenntnisse zu unterstreichen :-).

Ich habe gerade leider keine Zeit, systematisch das Skripten zu lernen.
Und deshalb will ich gerne die Zeit vergüten, die einer von den fähigen Skriptern dafür aufzuwenden bereit ist.

Vielen Dank und beste Grüße

phillip
--
OS X 10.5.8 | CS 3 5.04 | CS 5 7.03

als Antwort auf: [#407339]

(Dieser Beitrag wurde von ph am 14. Dez 2009, 13:23 geändert)
Top

Martin Fischer  M  p
Beiträge: 9687

14. Dez 2009, 14:30

Beitrag #6 von 18
Beitrag ID: #427686

Bewertung:

(3192 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

CS3 Javascript: Text in Zelle durch Bild ersetzen


Hallo Phillip,

mir ist die Zeit gerade sehr knapp.
Aber falls sich die nächsten Tage niemand meldet, erledige ich das in den nächsten Tagen.


Martin Fischer

Skripte für InDesign im Skriptarchiv von HilfDirSelbst.ch

als Antwort auf: [#427665] Top

ph p
Beiträge: 40

15. Dez 2009, 10:34

Beitrag #7 von 18
Beitrag ID: #427808

Bewertung:

(3162 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

CS3 Javascript: Text in Zelle durch Bild ersetzen


Lieber Martin,

vielen Dank für deine Antwort.

Wenn sich niemand meldet, komme ich gerne darauf zurück.

Es reizt mich ja schon Skripten zu lernen, aber gerade fehlt einfach die Zeit.

Grüße

phillip
--
OS X 10.5.8 | CS 3 5.04 | CS 5 7.03

als Antwort auf: [#427686] Top

Hans Haesler  M  p
Beiträge: 3882

15. Dez 2009, 11:55

Beitrag #8 von 18
Beitrag ID: #427838

Bewertung:

(3148 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

CS3 Javascript: Text in Zelle durch Bild ersetzen


Hallo Phillip,

um den Dateinamen zu entfernen, musst Du die Zeile ...

Code
myResult[n].remove(); 

... einsetzen, direkt vor dem Plazieren des Barcodes.

Ich werde mich mal dahintersetzen und versuchen, Deine weiteren Wünsche umzusetzen.

@ Martin: Du wolltest wohl sagen "... erledige ich das nach den nächsten Tagen" ;-)

Gruss, Hans

als Antwort auf: [#427808] Top

Martin Fischer  M  p
Beiträge: 9687

15. Dez 2009, 12:26

Beitrag #9 von 18
Beitrag ID: #427857

Bewertung:

(3139 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

CS3 Javascript: Text in Zelle durch Bild ersetzen


Hallo Hans,

> @ Martin: Du wolltest wohl sagen "... erledige ich das nach den nächsten Tagen" ;-)

Ja, im neuen Jahr. ;-)
Aber dass Du so billig davonkommst, das hätte ich auch nicht erwartet. ;-)


Martin Fischer

Skripte für InDesign im Skriptarchiv von HilfDirSelbst.ch

als Antwort auf: [#427838] Top

Hans Haesler  M  p
Beiträge: 3882

15. Dez 2009, 13:27

Beitrag #10 von 18
Beitrag ID: #427873

Bewertung:

(3120 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

CS3 Javascript: Text in Zelle durch Bild ersetzen


Hallo Phillip,

jetzt habe ich das ergänzte Script in der Script-Datenbank veröffentlicht: BarcodeErsetzer.js

Achtung: Der Pfad zum Ordner, welcher den Ordner mit den Dateien enthält, beginnt im Script auf dem Desktop.

Der gewünschte Objektstil wird zugewiesen. Falls dieser im Dokument nicht vorhanden ist, kommt keine Warnung. Doch er wird erzeugt und zugewiesen, muss aber hinterher manuell angepasst werden.

Das Script ist nur für eingeloggte Premium-Member sichtbar. Deshalb bei eventuellen Änderungswünschen bitte nicht das ganze Script hier posten.

@ Martin: So billig? Vielleicht spendet mir ja der Phillip aus lauter Dankbarkeit etwas. :-)

Gruss, Hans

als Antwort auf: [#427857] Top

ph p
Beiträge: 40

16. Dez 2009, 13:32

Beitrag #11 von 18
Beitrag ID: #428042

Bewertung:

(3081 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

CS3 Javascript: Text in Zelle durch Bild ersetzen


Lieber Hans,

vielen Dank für das Skript. Und gespendet wird auf jeden Fall. :-)

Leider funktioniert es noch nicht. Die Bilddateien werden nicht geladen (mit meinem Versuchsskript werden sie geladen – der Pfad stimmt also).

Ich habe einmal die folgende Zeilen auskommentiert, um zu sehen, was passiert:
Code
       // Rahmen entfernen und den Dateinamen wieder einsetzen  
for (var u=0; u<4; u++) {
curDoc.undo();
}


Wenn ich den Code richtig lese, müssten dann anstelle der Dateinamen ungefüllte Rahmen stehen. Allerdings wurde nur der Text gelöscht und kein Rahmen erzeugt. Können deshalb vielleicht die Bilder nicht hineingeladen werden?

Die Tabelle mit der ich es ausprobierte habe ich angehängt.

Noch einmal vielen Dank für deine Unterstützung!

Grüße

phillip
--
OS X 10.5.8 | CS 3 5.04 | CS 5 7.03

als Antwort auf: [#427873] Top

Anhang:
tabelle-mit-barcodeverweis.inx (110 KB)

Hans Haesler  M  p
Beiträge: 3882

16. Dez 2009, 15:21

Beitrag #12 von 18
Beitrag ID: #428056

Bewertung:

(3051 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

CS3 Javascript: Text in Zelle durch Bild ersetzen


Hallo Phillip,

bitteschön.

Ich kann das Nichtfunktionieren bestätigen. Dass sich die Dateinamen in einer Tabelle befinden, hatte ich überlesen. Tut mit leid.

Ich habe das veröffentlichte Script jetzt angepasst.

Die Änderungen:
– Der "Alert", welcher die Anzahl der gefundenen Dateinamen verkündet, ist nun ein "Confirm". Dadurch hast Du die Möglichkeit, mit Klick auf "Nein" die Ausführung abzubrechen.
– Der Bildrahmen wird nicht mehr zu Beginn der Fundstelle erzeugt, sondern am Schluss (...insertionPoints.item(-1)...).
– Die Grösse des Bildrahmens ist an die Tabellen-Zelle angepasst: 20 mm breit, 7.6 mm hoch.
– Der Bilddateiname wird erst entfernt, wenn der Barcode geladen ist.
– Dadurch wird die undo-Schleife zum Wiederherstellen bei nichtgefundener Datei nur drei Mal ausgeführt.

Kurze Erklärung zum letzten Punkt: Wenn eine Datei nicht geladen werden kann, dann wird die Meldung gezeigt. Nach Bestätigung durch "OK" wird der eingefügte Rahmen entfernt und der Dateiname bleibt so wie er war.

So. Und jetzt bist Du dran. :-)

Weil: Die Formatierung der Zellen sollte geändert werden:
– Zellenoptionen / Text
– Zellversatz: Oben: 0 mm / Unten: 0 mm
– Vertikale Ausrichtung: Ausrichten: Unten ausrichten

Und beim Objektstil "Barcode" die "Rahmeneinpassungsoptionen" aktivieren:
– Einpassen an leeren Rahmen: Inhalt an Rahmen anpassen.

So sollte es funktionieren.

Gruss, Hans

als Antwort auf: [#428042] Top

ph p
Beiträge: 40

16. Dez 2009, 15:56

Beitrag #13 von 18
Beitrag ID: #428065

Bewertung:

(3040 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

CS3 Javascript: Text in Zelle durch Bild ersetzen


Hallo Hans!

das ist fantastisch! Es tut genau was es soll.

Beim Testen ist mir aufgefallen, dass es nicht funktioniert, wenn in der Zelle Übersatztext steht. Allerdings ist das bei all meinen Tabellen nicht der Fall, von daher habe ich da keinen Änderungsbedarf.

Und über die Spende unterhalten wir uns besser per PN.

Noch einmal herzlichen Dank!

phillip
--
OS X 10.5.8 | CS 3 5.04 | CS 5 7.03

als Antwort auf: [#428056] Top

Hans Haesler  M  p
Beiträge: 3882

16. Dez 2009, 16:26

Beitrag #14 von 18
Beitrag ID: #428073

Bewertung:

(3031 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

CS3 Javascript: Text in Zelle durch Bild ersetzen


Hallo Phillip,

bitteschön. Wunderbar, dass es nun klappt.

Das Problem wegen dem Übersatz werde ich mir dennoch gelegentlich vornehmen.

Auf Wiederhören per PN. :-)

Gruss, Hans

als Antwort auf: [#428065] Top

bernd.richter S
Beiträge: 44

9. Mär 2010, 10:14

Beitrag #15 von 18
Beitrag ID: #435742

Bewertung:

(2355 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

CS3 Javascript: Text in Zelle durch Bild ersetzen


Hallo Zusammen!

Auch ich bin neu im Bereich InDesign Scripting und möchte gerne einige Arbeitsabläufe automatisieren ;)

Da es bei mir auch um Barcodes geht, versuche ich auf euer Script aufzubauen, ich habe auch ein wenig Grundwissen in JavaScript.
Jedoch habe ich folgendes Problem:
Eine Excel Datei enthält die Bezeichnung des Barcodes. Dieser muss dann von einem Ordner der die Grafikdateien enthhält, geladen werden. Jedoch ist nicht der komplette Dateiname im Excel-File hinterlegt, der Wert in der Tabelle muss noch um ein Suffix und den Dateinamen ergänzt werden.
Ist dies möglich? Und wie kann ich die einzelnen Tabellenfelder der Excel Tabelle ansprechen?

Ich freue mich und bin dankbar für jegliche Hilfestellung!

Viele Grüße

Bernd

als Antwort auf: [#428073] Top
« « 1 2 » »  


Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign Skriptwerkstatt » CS3 Javascript: Text in Zelle durch Bild ersetzen


^