mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Fr 26.04.2024 04:58 Benutzername: Passwort: Auto-Login

Thema: [InDesign CS] Schriften per Script ersetzen? vom 04.10.2005


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Software - Print -> [InDesign CS] Schriften per Script ersetzen?
Autor Nachricht
mimone
Threadersteller

Dabei seit: 02.09.2005
Ort: Schwabach
Alter: -
Geschlecht: Weiblich
Verfasst Di 04.10.2005 12:38
Titel

[InDesign CS] Schriften per Script ersetzen?

Antworten mit Zitat Zum Seitenanfang

liebe fachfrauen und männer,

ich benötige hilfe bei folgendem Problem:

auf meinem mc ist z.b. die schrift "diri regular tab" installiert. jetzt habe ich ein quark 6 dokument. dieses wandle ich in quark 5 dann in quark 4 um. jetzt öffne ich das ganze im indesign. nun heisst die schrift allerdings nichtmehr "diri regular tab" sondern erscheint als "diri tab regular". Sie erstetzt sich also nicht , obwohl sie offen ist. Man kann es durch suchen/ersetzen regeln im indesign, was aber viel zeit kostet.

was ich nun eingentlich will?

ein SCRIPT

--> es geht mir praktisch darum, dass indesign im Dokument-Öffnen-Dialog mir nicht anbietet:
Diese Schriften fehlen, möchten Sie alle Schriften, die "blablabla" heissen durch die Schrift "xyz" ersetzten?

diese abfrage bräuchte ich als script

wer kann mir einen tip geben, auf der indesign cs cd habe ich schon nachgelesen, werde aber nicht schlau draus



Titel editiert
ck


Zuletzt bearbeitet von Cocktailkrabbe am Di 04.10.2005 12:43, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
Cocktailkrabbe

Dabei seit: 24.06.2002
Ort: 70374
Alter: 40
Geschlecht: Männlich
Verfasst Di 04.10.2005 12:42
Titel

Antworten mit Zitat Zum Seitenanfang

Hi,

dafür gibts doch eben die Funktion „Schriften suchen“ ?! Hmm...?!



Gruß
ck
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
mimone
Threadersteller

Dabei seit: 02.09.2005
Ort: Schwabach
Alter: -
Geschlecht: Weiblich
Verfasst Di 04.10.2005 12:46
Titel

zu viele dateien

Antworten mit Zitat Zum Seitenanfang

ich habe leider unglaublich viele dateien bei denen ich dies alles per suchen/ersetzten tun müsste. ich hätte es eben einfach gerne automatisiert. wenn es ginge.
  View user's profile Private Nachricht senden
Cocktailkrabbe

Dabei seit: 24.06.2002
Ort: 70374
Alter: 40
Geschlecht: Männlich
Verfasst Di 04.10.2005 13:28
Titel

Antworten mit Zitat Zum Seitenanfang

Dann schau doch mal bei Adobe:

Adobe Studio Exchange
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
giesskanne

Dabei seit: 23.10.2005
Ort: Freudenstadt
Alter: 45
Geschlecht: Männlich
Verfasst Mo 24.10.2005 00:45
Titel

Antworten mit Zitat Zum Seitenanfang

Hier ein Skript, um eine Schrift im Text, in den Absatzformaten und in den Zeichenformaten durch eine andere zu ersetzen.
Falls Du immer noch ein Skript brauchst, um mehrere Schriften durch eine zu ersetzen, dann laß es mich wissen. Das Skript könnte entsprechend angepaßt werden.

Code:
//FindChangeFont.jsx
//An InDesign CS JavaScript
//
//Finds and changes a specified font in a document. If the font
//has been set to the document default, changes the document
//default.
if(app.documents.length !=0){
   myChangeFont();
}
function myChangeFont(){
   var myCounter, myParagraphStyle, myCharacterStyle;
   //Enter the font name strings you got from the GetFontNames.jsx script.
   //Note that the font names will generally have a tab between the font family name
   //and the font style name.
   var myFindFontName = "Times New Roman   Regular";
   var myChangeFontName = "Bembo   Regular";
   app.findPreferences = NothingEnum.nothing;
   app.changePreferences = NothingEnum.nothing;
   app.findPreferences.appliedFont = app.fonts.item(myFindFontName);
   app.changePreferences.appliedFont = app.fonts.item(myChangeFontName);
   app.documents.item(0).search("", undefined, undefined, "");
   if(app.documents.item(0).textDefaults.appliedFont == app.documents.item(0).fonts.item(myFindFontName)){
      app.documents.item(0).textDefaults.font = app.fonts.item(myChangeFontName);
   }
   for(myCounter = 0; myCounter < app.documents.item(0).paragraphStyles.length; myCounter ++){
      myParagraphStyle = app.documents.item(0).paragraphStyles.item(myCounter);
      if(myParagraphStyle.name.indexOf("[") != 0){
         if(myParagraphStyle.appliedFont.name == myFindFontName){
            myParagraphStyle.appliedFont = app.fonts.item(myChangeFontName);
         }
      }
   }
   for(myCounter = 0; myCounter < app.documents.item(0).characterStyles.length; myCounter ++){
      myCharacterStyle = app.documents.item(0).characterStyles.item(myCounter);
      if(myCharacterStyle.name.indexOf("[") != 0){
         if(myCharacterStyle.appliedFont.name == myFindFontName){
            myCharacterStyle .appliedFont = app.fonts.item(myChangeFontName);
         }
      }
   }
   $.write(app.documents.item(0).textDefaults.appliedFont.name + "\r");
   if(app.documents.item(0).textDefaults.appliedFont.name == myFindFontName){
      app.documents.item(0).textDefaults.appliedFont = app.fonts.item(myChangeFontName);
   }
   app.findPreferences = NothingEnum.nothing;
   app.changePreferences = NothingEnum.nothing;
}


Und hier noch das Skript GetFontNames.jsx, auf welches oben verwiesen wurde:
Code:
//GetFontNames.jsx
//An InDesign CS2 JavaScript 
// 
//Gets the name of a font from the active document and then 
//gets the name of a font from the application object. 
//Copy the font names out of the prompt dialog and you'll 
//be able to use them in a font find/change script (such as 
//FindChangeFont.jsx. 
//
if(app.documents.length !=0){ 
   myFontNames = myGetFontName(app.documents.item(0)); 
   if(myFontNames != ""){ 
      myDisplayDialog("Document Fonts", myFontNames); 
   } 
   myFontNames = myGetFontName(app); 
   myDisplayDialog("Application Fonts", myFontNames);    

function myGetFontName(myObject){
   var myFontNames;
   if(myObject.fonts.length != 0){
      myFontNames = myObject.fonts.everyItem().name;
   } 
   else{ 
      myFontNames = "" 
   } 
   return myFontNames; 

function myDisplayDialog(myDialogName, myFontNames){ 
   var myDialog = app.dialogs.add({name:myDialogName, canCancel:false}); 
   with(myDialog.dialogColumns.add()){ 
      with(dialogRows.add()){ 
         with(dialogColumns.add()){ 
            staticTexts.add({staticLabel:"Fonts"}); 
         } 
         with(dialogColumns.add()){ 
            var myFontDropdown = dropdowns.add({stringList:myFontNames, selectedIndex:0}); 
         } 
      } 
   } 
   myDialog.show(); 
   var myFontName = myFontNames[myFontDropdown.selectedIndex]; 
   myDialog.destroy(); 
   prompt("Copy this font name:", myFontName, myDialogName); 
}
  View user's profile Private Nachricht senden
ghazalin

Dabei seit: 11.03.2008
Ort: -
Alter: -
Geschlecht: -
Verfasst Di 11.03.2008 10:46
Titel

Antworten mit Zitat Zum Seitenanfang

Ich habe versucht mit diesem Script zu arbeit. Das hat aber nicht den gewünschten Erfolg gebracht.
Ich erzeuge per Script ein Indesign-Dokument mit 6 Text-Bereiche. Zwei davon sind mit einander verkettet.
Nach dem ich den Inhalt aus einer XML-Datei importiert habe (mit Transformation) möchte ich nun die Schrifftart fürs ganze Dokument von Times new Roman nach Pragmatica Cond ändern und die einzelnen Text-Bereiche nunterschiedliche Schrifftgrößen geben.


Das habe ich in so realisiert
Code:
myMenu.ImportXML = function()
{
   // Ein neues Dikument wird angelegt, aber nicht angezeigt
   var myDocument;
   myDocument = app.documents.add(false);
   with(myDocument.documentPreferences)
   {
      pageHeight = "210mm";
      pageWidth = "297mm";
      pageOrientation = PageOrientation.landscape;
      pagesPerDocument = 1;
   }
   

   // Add XML import preferences
   var myXMLImportPreferences = myDocument.xmlImportPreferences;
   myXMLImportPreferences.allowTransform = true;
   myXMLImportPreferences.createLinkToXML = true;
   myXMLImportPreferences.ignoreUnmatchedIncoming = false;
   myXMLImportPreferences.ignoreWhitespace = false;
   myXMLImportPreferences.importCALSTables = false;
   myXMLImportPreferences.importStyle = XMLImportStyles.mergeImport;
   myXMLImportPreferences.importTextIntoTables = false;
   myXMLImportPreferences.importToSelected = false;
   myXMLImportPreferences.removeUnmatchedExisting = false;
   myXMLImportPreferences.repeatTextElements = false;
   //The following properties are only used when the "allowTransform" property is set to True.
   myXMLImportPreferences.transformFilename = "c:\\XML-XSLT for ToxTrack\\xml4Indesign.xsl"
   
   // im aktiven Dokument werden Textframes eingefügt:
   var myFile = File.openDialog("Choose a file", "*.xml", false);
   if (myFile == null)
   {
      // das angelegte Dokument, welches noch versteckt ist, wid geschlossen.
      myDocument.close(SaveOptions.NO);
   }
   else
   {
      // 1. das angelegte Dokument wird sichtbar gemacht
      var myWindow = myDocument.windows.add();
      
      // 2. ein Textframe wird angelegt
      // In diesem Textframe sind die Finiscode und Bestellnummer plaziert.
      var myTextFrame6 = myDocument.textFrames.add();
      // myTextFrame.geometricBounds = [ Y, X, Höhe, Breite];
      myTextFrame6.geometricBounds = [ "13mm", "13mm", "47mm", "102mm"];
      
      // In diesem Textframe sind die Product Sales Names plaziert.
      var myTextFrame5 = myDocument.textFrames.add();
      myTextFrame5.geometricBounds = [ "47mm", "13mm", "107mm", "102mm"];
      
      // In den folgenden drei Textframes sind die Warningstexte plaziert.
      var myTextFrame4 = myDocument.textFrames.add();
      myTextFrame4.geometricBounds = [ "107mm", "13mm", "197mm", "43mm"];
      
      var myTextFrame3 = myDocument.textFrames.add();
      myTextFrame3.geometricBounds = [ "107mm", "43mm", "197mm", "73mm"];
      
      var myTextFrame2 = myDocument.textFrames.add();
      myTextFrame2.geometricBounds = [ "107mm", "73mm", "197mm", "102mm"];
      
      // In den folgenden zwei Textframes sind die Kennzeichnungstexte plaziert.
      var myTextFrame1 = myDocument.textFrames.add();
      myTextFrame1.geometricBounds = [ "13mm", "104mm", "197mm", "193mm"];
      
      var myTextFrame0 = myDocument.textFrames.add();
      myTextFrame0.geometricBounds = [ "13mm", "195mm", "197mm", "284mm"];
      
      // die letzten beiden Textframes sollen miteinander verknüpft sein, damit der Text vom ersten in den zweiten hineinfliessen kann.
      myDocument.textFrames.item(1).nextTextFrame = myDocument.textFrames.item(0);
      
      // 3. importiere die XML-Datei, welche im OpenFile-Dialog ausgewählt wurde
      myDocument.xmlElements.item(0).importXML(File(myFile));
      // Die Product Sales Names entsprechend zuordnen
      myDocument.xmlElements.item(0).xmlElements.item(0).xmlElements.item(0).placeXML(myDocument.textFrames.item(5));
      // Die Kennzeinungstexte entsprechend zuordnen
      myDocument.xmlElements.item(0).xmlElements.item(0).xmlElements.item(1).markup(myDocument.textFrames.item(1).parentStory.insertionPoints.item(-1));
      // Die Finiscode und Bestellnummer  entsprechend zuordnen
      myDocument.xmlElements.item(0).xmlElements.item(0).xmlElements.item(2).markup(myDocument.textFrames.item(6));
      // Die Warningstexte entsprechend zuordnen
      myDocument.xmlElements.item(0).xmlElements.item(0).xmlElements.item(3).xmlElements.item(0).markup(myDocument.textFrames.item(4));
      myDocument.xmlElements.item(0).xmlElements.item(0).xmlElements.item(3).xmlElements.item(1).markup(myDocument.textFrames.item(3));
      myDocument.xmlElements.item(0).xmlElements.item(0).xmlElements.item(3).xmlElements.item(2).markup(myDocument.textFrames.item(2));
      
      // 4. Schriftart setzen:
      
      myDocument.textFrames.item(0).texts.item(0).appliedFont = app.fonts.item("Pragmatica Cond");
      myDocument.textFrames.item(1).texts.item(0).appliedFont = app.fonts.item("Pragmatica Cond");
      myDocument.textFrames.item(2).texts.item(0).appliedFont = app.fonts.item("Pragmatica Cond");
      myDocument.textFrames.item(3).texts.item(0).appliedFont = app.fonts.item("Pragmatica Cond");
      myDocument.textFrames.item(4).texts.item(0).appliedFont = app.fonts.item("Pragmatica Cond");
      myDocument.textFrames.item(5).texts.item(0).appliedFont = app.fonts.item("Pragmatica Cond");
      myDocument.textFrames.item(6).texts.item(0).appliedFont = app.fonts.item("Pragmatica Cond");
   
            // 5. Schriftgröße setzen:
      myDocument.textFrames.item(0).texts.item(0).pointSize = 6;
      myDocument.textFrames.item(1).texts.item(0).pointSize = 6;
      myDocument.textFrames.item(2).texts.item(0).pointSize = 6;
      myDocument.textFrames.item(3).texts.item(0).pointSize = 6;
      myDocument.textFrames.item(4).texts.item(0).pointSize = 6;
      myDocument.textFrames.item(5).texts.item(0).pointSize = 12;
      myDocument.textFrames.item(6).texts.item(0).pointSize = 8;   
   }


Dies läuft aber nicht ganz sauber und zwar das Script fängt in jedem Text-Bereich richtig an. irgendwann dadrin wechselt er die Schrifftart wieder nach TimesNewRoman mit der richtigen von mir eingestellten Schrifftgröße und einbißchen später wechselt er nochmal zu einer falschen Schrifftgröße noch.

was mach ich hier falsch?
Hat einer von euch eine Ahnung?

Mit bestem Dank
ghazalin
  View user's profile Private Nachricht senden
Jigity

Dabei seit: 30.07.2005
Ort: Augsburg
Alter: 44
Geschlecht: Männlich
Verfasst Di 11.03.2008 11:00
Titel

Antworten mit Zitat Zum Seitenanfang

Nur so ein Gedanke, wie wäre es, wenn du der XML-Datei gleich ein entsprechendes Absatzformat mitgibst, dass deine gewünschte Zielschrift enhält? Geht mit dem Adobe Namespace näheres siehe

http://www.adobe.com/de/products/indesign/scripting/pdfs/indesign_and_xml_technical_reference.pdf

Edit: Probier mal folgendes:

Anstatt myDocument.textFrames.item(0) verwende einfach mal myTextFrame0 (diese Objekte hast du ja bei myDocument.textFrames.add() erzeugt)

Anstatt myDocument.textFrames.item(0).texts.item(0).appliedFont würde ich myTextFrame0.parentStory.appliedFont probieren


Zuletzt bearbeitet von Jigity am Di 11.03.2008 11:14, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
 
Ähnliche Themen Script – Text mit Bild ersetzen
InDesign Suchen/Ersetzen ... Text durch Grafik ersetzen
Illustrator Script: Suchen & Ersetzen als Stapelverarbeitung
Schriften in EPS-Dateien pauschal ersetzen
Schriften über viele Dokumente ersetzen
Wie mehrere fehlende Schriften in Photoshop ersetzen
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Software - Print


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.