Willkommen auf dem Portal für Mediengestalter
|
|
Autor |
Nachricht |
mimone
Threadersteller
Dabei seit: 02.09.2005
Ort: Schwabach
Alter: -
Geschlecht:
|
Verfasst Di 04.10.2005 12:38
Titel [InDesign CS] Schriften per Script ersetzen? |
|
|
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
|
|
|
|
|
Cocktailkrabbe
Dabei seit: 24.06.2002
Ort: 70374
Alter: 40
Geschlecht:
|
Verfasst Di 04.10.2005 12:42
Titel
|
|
|
Hi,
dafür gibts doch eben die Funktion „Schriften suchen“ ?!
Gruß
ck
|
|
|
|
|
Anzeige
|
|
|
mimone
Threadersteller
Dabei seit: 02.09.2005
Ort: Schwabach
Alter: -
Geschlecht:
|
Verfasst Di 04.10.2005 12:46
Titel zu viele dateien |
|
|
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.
|
|
|
|
|
Cocktailkrabbe
Dabei seit: 24.06.2002
Ort: 70374
Alter: 40
Geschlecht:
|
|
|
|
|
giesskanne
Dabei seit: 23.10.2005
Ort: Freudenstadt
Alter: 45
Geschlecht:
|
Verfasst Mo 24.10.2005 00:45
Titel
|
|
|
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);
} |
|
|
|
|
|
ghazalin
Dabei seit: 11.03.2008
Ort: -
Alter: -
Geschlecht: -
|
Verfasst Di 11.03.2008 10:46
Titel
|
|
|
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
|
|
|
|
|
Jigity
Dabei seit: 30.07.2005
Ort: Augsburg
Alter: 44
Geschlecht:
|
Verfasst Di 11.03.2008 11:00
Titel
|
|
|
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
|
|
|
|
|
|
|
|
Ä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
|
|
|
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.
|
|