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

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

CS3 Javascript: Text in Zelle durch Bild ersetzen

schlang
Beiträge gesamt: 54

3. Sep 2009, 14:58
Beitrag # 1 von 31
Bewertung:
(17412 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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!
X

CS3 Javascript: Text in Zelle durch Bild ersetzen

Martin Fischer
  
Beiträge gesamt: 12783

3. Sep 2009, 16:46
Beitrag # 2 von 31
Beitrag ID: #407302
Bewertung:
(17374 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Herr Schlang,

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


als Antwort auf: [#407273]

CS3 Javascript: Text in Zelle durch Bild ersetzen

schlang
Beiträge gesamt: 54

3. Sep 2009, 23:16
Beitrag # 3 von 31
Beitrag ID: #407335
Bewertung:
(17337 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat Dieses Skript ist nur für Premium-Member sichtbar.



als Antwort auf: [#407302]

CS3 Javascript: Text in Zelle durch Bild ersetzen

Martin Fischer
  
Beiträge gesamt: 12783

3. Sep 2009, 23:30
Beitrag # 4 von 31
Beitrag ID: #407339
Bewertung:
(17328 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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);



als Antwort auf: [#407335]

CS3 Javascript: Text in Zelle durch Bild ersetzen

ph
Beiträge gesamt: 50

14. Dez 2009, 13:20
Beitrag # 5 von 31
Beitrag ID: #427665
Bewertung:
(17007 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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


als Antwort auf: [#407339]
(Dieser Beitrag wurde von ph am 14. Dez 2009, 13:23 geändert)

CS3 Javascript: Text in Zelle durch Bild ersetzen

Martin Fischer
  
Beiträge gesamt: 12783

14. Dez 2009, 14:30
Beitrag # 6 von 31
Beitrag ID: #427686
Bewertung:
(16984 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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.


als Antwort auf: [#427665]

CS3 Javascript: Text in Zelle durch Bild ersetzen

ph
Beiträge gesamt: 50

15. Dez 2009, 10:34
Beitrag # 7 von 31
Beitrag ID: #427808
Bewertung:
(16954 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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


als Antwort auf: [#427686]

CS3 Javascript: Text in Zelle durch Bild ersetzen

Hans Haesler
  
Beiträge gesamt: 5826

15. Dez 2009, 11:55
Beitrag # 8 von 31
Beitrag ID: #427838
Bewertung:
(16940 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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]

CS3 Javascript: Text in Zelle durch Bild ersetzen

Martin Fischer
  
Beiträge gesamt: 12783

15. Dez 2009, 12:26
Beitrag # 9 von 31
Beitrag ID: #427857
Bewertung:
(16931 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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. ;-)


als Antwort auf: [#427838]

CS3 Javascript: Text in Zelle durch Bild ersetzen

Hans Haesler
  
Beiträge gesamt: 5826

15. Dez 2009, 13:27
Beitrag # 10 von 31
Beitrag ID: #427873
Bewertung:
(16912 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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]

CS3 Javascript: Text in Zelle durch Bild ersetzen

ph
Beiträge gesamt: 50

16. Dez 2009, 13:32
Beitrag # 11 von 31
Beitrag ID: #428042
Bewertung:
(16873 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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


als Antwort auf: [#427873]
Anhang:
tabelle-mit-barcodeverweis.inx (110 KB)

CS3 Javascript: Text in Zelle durch Bild ersetzen

Hans Haesler
  
Beiträge gesamt: 5826

16. Dez 2009, 15:21
Beitrag # 12 von 31
Beitrag ID: #428056
Bewertung:
(16843 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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]

CS3 Javascript: Text in Zelle durch Bild ersetzen

ph
Beiträge gesamt: 50

16. Dez 2009, 15:56
Beitrag # 13 von 31
Beitrag ID: #428065
Bewertung:
(16832 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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


als Antwort auf: [#428056]

CS3 Javascript: Text in Zelle durch Bild ersetzen

Hans Haesler
  
Beiträge gesamt: 5826

16. Dez 2009, 16:26
Beitrag # 14 von 31
Beitrag ID: #428073
Bewertung:
(16823 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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]

CS3 Javascript: Text in Zelle durch Bild ersetzen

bernd.richter
Beiträge gesamt: 44

9. Mär 2010, 10:14
Beitrag # 15 von 31
Beitrag ID: #435742
Bewertung:
(16147 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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]
X