[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt charstyle2hyperlink (CS5, WIN)

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

charstyle2hyperlink (CS5, WIN)

cwenet
Beiträge gesamt: 1140

24. Jul 2011, 08:16
Beitrag # 1 von 21
Bewertung:
(11884 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Tag,

mit diesem Script versuche ich gerade Ziffern die ein bestimmtes Zeichenformat haben mit einem Hyperlink zu versehen. Hyperlinkziel soll die gefundene Ziffer sein.

Code
if (app.documents.length > 0) { 
var myDocument = app.activeDocument;
var myHyperlinkStyle = myDocument.characterStyles.item("Ziffer"); // replace hyperlink with name of your char style for links
//alert(myHyperlinkStyle);
main();
} else {
alert("Please open a document");
}

function main() {
app.findGrepPreferences = NothingEnum.nothing;
app.changeGrepPreferences = NothingEnum.nothing;

//the value to find
myFindVal = "\\d+";
doSearchAndReplace(myFindVal, app.activeDocument);
// reset search
app.findGrepPreferences = NothingEnum.nothing;
app.changeGrepPreferences = NothingEnum.nothing;
}

function doSearchAndReplace(stringfind, searchin) {
app.findGrepPreferences.findWhat = stringfind;

//Set the find options.
app.findChangeGrepOptions.includeFootnotes = true;
app.findChangeGrepOptions.includeHiddenLayers = false;
app.findChangeGrepOptions.includeLockedLayersForFind = false;
app.findChangeGrepOptions.includeLockedStoriesForFind = false;
app.findChangeGrepOptions.includeMasterPages = false;

var myFoundItems = searchin.findGrep();

for (i = 0; i < myFoundItems.length; i++) {
var item = myFoundItems[i].contents; //the destination page
var destPageNumber = item.slice(5);
var myDestPage = searchin.pages.itemByName(destPageNumber);
var myHyperlinkDestination = myMakeHyperlinkDestination(myDestPage);
myMakeHyperlink(myFoundItems[i], myHyperlinkDestination);
myFoundItems[i].applyCharacterStyle(myHyperlinkStyle, false);
}
}

function myMakeHyperlink(myFoundItem, myHyperlinkDestination){
try {
var myHyperlinkTextSource = myDocument.hyperlinkTextSources.add(myFoundItem);
var myHyperlink = myDocument.hyperlinks.add(myHyperlinkTextSource, myHyperlinkDestination);
myHyperlink.visible = true;
}
catch(myError){
}
}

function myMakeHyperlinkDestination(myDestPage){
//If the hyperlink destination already exists, use it;
//if it doesn't, then create it.
try{
var myHyperlinkDestination = myDocument.hyperlinkDestinations.item(myDestPage);
myHyperlinkDestination.name;
}
catch(myError){
myHyperlinkDestination = myDocument.hyperlinkPageDestinations.add(myDestPage);
myHyperlinkDestination.destinationPage = myDestPage;
}
//myHyperlinkDestination.name = myDestPage.name;

//Set other hyperlink properties here, if necessary.
return myHyperlinkDestination;
}


ungültiger Wert für Parameter "destination" der Methode "Add" Page erwartet aber nothing erhalten

Hat jemand eine Idee und kann mir bitte helfen.

Danke und Gruß
Christoph

(Dieser Beitrag wurde von cwenet am 24. Jul 2011, 08:18 geändert)
X

charstyle2hyperlink (CS5, WIN)

Hans Haesler
  
Beiträge gesamt: 5826

24. Jul 2011, 12:26
Beitrag # 2 von 21
Beitrag ID: #476718
Bewertung: |
(11855 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

versuche mal folgendes: Die Zeile 36 auskommentieren und die Zeile 37 wie nachstehend ändern.

Code
//var destPageNumber = item.slice(5); 
var myDestPage = searchin.pages.itemByName(item);

Gruss, Hans


als Antwort auf: [#476702]

charstyle2hyperlink (CS5, WIN)

cwenet
Beiträge gesamt: 1140

25. Jul 2011, 08:33
Beitrag # 3 von 21
Beitrag ID: #476754
Bewertung:
(11816 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Lieber Hans,

vielen Dank, so klappt es prima.

Grüße
Christoph


als Antwort auf: [#476718]

charstyle2hyperlink (CS5, WIN)

cwenet
Beiträge gesamt: 1140

27. Jul 2011, 07:04
Beitrag # 4 von 21
Beitrag ID: #476905
Bewertung:
(11761 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke nochmal an Hans.

Nun stelle ich fest, dass der interaktive Bereich im PDF später doch etwas klein ist, da ja nur eine Zahl auf die Maus reagiert.

Wie kann ich den ganzen Absatz interaktiv machen, in dem das Zeichenformat gefunden wurde? Das Hyperlinkziel soll aber immer noch die gefundene Zahl sein.

Gruss
Christoph


als Antwort auf: [#476754]

charstyle2hyperlink (CS5, WIN)

Hans Haesler
  
Beiträge gesamt: 5826

27. Jul 2011, 08:29
Beitrag # 5 von 21
Beitrag ID: #476913
Bewertung:
(11745 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

bitteschön.

Gehe mal zur Zeile 46 ...

Code
var myHyperlinkTextSource = myDocument.hyperlinkTextSources.add(myFoundItem); 

... und ergänze sie so:

Code
var myHyperlinkTextSource = myDocument.hyperlinkTextSources.add(myFoundItem.paragraphs[0]); 

Gruss, Hans


als Antwort auf: [#476905]

charstyle2hyperlink (CS5, WIN)

cwenet
Beiträge gesamt: 1140

27. Jul 2011, 10:58
Beitrag # 6 von 21
Beitrag ID: #476930
Bewertung:
(11727 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
merci viel mal Hans.

so sieht es nun aus und funktioniert fast:

Code
if (app.documents.length > 0) {  
var myDocument = app.activeDocument;
var myHyperlinkStyle = myDocument.characterStyles.item("ziffer"); // replace hyperlink with name of your char style for links
//alert(myHyperlinkStyle);
main();
} else {
alert("Please open a document");
}

function main() {
app.findGrepPreferences = NothingEnum.nothing;
app.changeGrepPreferences = NothingEnum.nothing;
app.findTextPreferences.appliedcharacterStyles = "ziffer";

//the value to find
myFindVal = "\\d+";
doSearchAndReplace(myFindVal, app.activeDocument);
// reset search
app.findGrepPreferences = NothingEnum.nothing;
app.changeGrepPreferences = NothingEnum.nothing;
}

function doSearchAndReplace(stringfind, searchin) {
app.findGrepPreferences.findWhat = stringfind;

//Set the find options.
app.findChangeGrepOptions.includeFootnotes = true;
app.findChangeGrepOptions.includeHiddenLayers = false;
app.findChangeGrepOptions.includeLockedLayersForFind = false;
app.findChangeGrepOptions.includeLockedStoriesForFind = false;
app.findChangeGrepOptions.includeMasterPages = false;

var myFoundItems = searchin.findGrep();

for (i = 0; i < myFoundItems.length; i++) {
var item = myFoundItems[i].contents; //the destination page
//var destPageNumber = item.slice(5);
var myDestPage = searchin.pages.itemByName(item);
var myHyperlinkDestination = myMakeHyperlinkDestination(myDestPage);
myMakeHyperlink(myFoundItems[i], myHyperlinkDestination);
myFoundItems[i].applyCharacterStyle(myHyperlinkStyle, false);
}
}

function myMakeHyperlink(myFoundItem, myHyperlinkDestination){
try {
//var myHyperlinkTextSource = myDocument.hyperlinkTextSources.add(myFoundItem);
var myHyperlinkTextSource = myDocument.hyperlinkTextSources.add(myFoundItem.paragraphs[0]);
var myHyperlink = myDocument.hyperlinks.add(myHyperlinkTextSource, myHyperlinkDestination);
myHyperlink.visible = true;
}
catch(myError){
}
}

function myMakeHyperlinkDestination(myDestPage){
//If the hyperlink destination already exists, use it;
//if it doesn't, then create it.
try{
var myHyperlinkDestination = myDocument.hyperlinkDestinations.item(myDestPage);
myHyperlinkDestination.name;
}
catch(myError){
myHyperlinkDestination = myDocument.hyperlinkPageDestinations.add(myDestPage);
myHyperlinkDestination.destinationPage = myDestPage;
}
//myHyperlinkDestination.name = myDestPage.name;

//Set other hyperlink properties here, if necessary.
return myHyperlinkDestination;
}


Ich hab in Zeile 13 das hier noch eingefügt:
app.findTextPreferences.appliedcharacterStyles = "ziffer";

da sonst das Script sämtliche Ziffern im text komischerweise auch mit dem Zeichenformat "Ziffer" nachträglich formatiert werden.

Fehler: die Eigenschaft wird nicht unterstützt.

Bitte um weitere Hilfe.

Gruß
Christoph


als Antwort auf: [#476913]

charstyle2hyperlink (CS5, WIN)

Hans Haesler
  
Beiträge gesamt: 5826

27. Jul 2011, 12:55
Beitrag # 7 von 21
Beitrag ID: #476946
Bewertung:
(11714 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

anstelle von "appliedcharacterStyles" muss "appliedCharacterStyle" (mit grossem "C" und ohne "s" am Schluss) benutzt werden.

Ich vermute aber, dass das nicht ausreicht. Doch gleich muss ich wieder weg und kann voraussichtlich erst gegen Abend die Sache näher untersuchen.

Gruss, Hans


als Antwort auf: [#476930]

charstyle2hyperlink (CS5, WIN)

cwenet
Beiträge gesamt: 1140

27. Jul 2011, 17:13
Beitrag # 8 von 21
Beitrag ID: #476976
Bewertung:
(11688 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

danke für die richtige Schreibweise.
Ja, Du hattest Recht. Alle Ziffern werden weiterhin formatiert.

Im Grunde kann ja eigentlich die Suche nach Ziffern entfallen:
myFindVal = "\\d+";

Ich beschränke ja bereits durch das Zeichenformat.
In meinem Fall würde das auch reichen.

Gruß
Christoph


als Antwort auf: [#476946]

charstyle2hyperlink (CS5, WIN)

Hans Haesler
  
Beiträge gesamt: 5826

27. Jul 2011, 17:33
Beitrag # 9 von 21
Beitrag ID: #476979
Bewertung:
(11683 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

in diesem Falle überlasse ich es Dir, "Grep" durch "Text" zu ersetzen.

Gruss, Hans


als Antwort auf: [#476976]

charstyle2hyperlink (CS5, WIN)

Martin Fischer
  
Beiträge gesamt: 12791

27. Jul 2011, 18:30
Beitrag # 10 von 21
Beitrag ID: #476986
Bewertung:
(11667 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

Antwort auf: in diesem Falle überlasse ich es Dir, "Grep" durch "Text" zu ersetzen.


Dein Satz machte mich stutzig und mir kommt eine schon länger bohrende Frage wieder hoch. Und ich nehme Deinen Hinweis zum Anlass, mal öffentlich darüber zu räsonieren. ;-)

Es ist korrekt, dass man manche Dinge mit GREP und andere mit TEXT erledigen kann. Aber gibt es etwas, was man mit TEXT erledigen kann, das so nicht mit GREP geht?
Sprich: Gibt es Situationen, wo man besser mit TEXT arbeitet als mit GREP?

Oder etwas provokativer: Macht GREP im Grunde genommen TEXT nicht überflüssig?


TEXT also ein Entgegenkommen an diejenigen, die sich mit GREP noch nicht sicher fühlen. Für die GREPper aber ein überkommenes Relikt?


Ich nutze selbst oft noch TEXT.
Auf der Benutzeroberfläche bietet es den Vorteil, dass zusammen mit GREP insgesamt zwei unterschiedliche Suchen mit unterschiedlichen Einstellungen im fliegenden Wechsel vorgenommen werden können.

Könnte man beim Skripten jedoch nicht grundsätzlich auf TEXT verzichten?


als Antwort auf: [#476979]
(Dieser Beitrag wurde von Martin Fischer am 27. Jul 2011, 18:35 geändert)

charstyle2hyperlink (CS5, WIN)

WernerPerplies
Beiträge gesamt: 2772

27. Jul 2011, 18:55
Beitrag # 11 von 21
Beitrag ID: #476988
Bewertung:
(11656 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Martin,

Zitat Oder etwas provokativer: Macht GREP im Grunde genommen TEXT nicht überflüssig?


Ich denke, grundsätzlich ja, aber RegEx-Ausdrücke sind im Verhältnis zu reinen Stringvergleichen (Text) seeeeehr langsam.

Also bei großen Dateien und in Schleifen ist die Textsuche mit Sicherheit vorzuziehen und sicherlich auch einfacher definierbar.


als Antwort auf: [#476986]

charstyle2hyperlink (CS5, WIN)

Martin Fischer
  
Beiträge gesamt: 12791

27. Jul 2011, 19:53
Beitrag # 12 von 21
Beitrag ID: #476993
Bewertung:
(11645 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Werner,

ok, die Ausführungsgeschwindigkeit ist ein gutes Argument.
Das werde ich mal genauer ins Auge fassen.

Danke.


als Antwort auf: [#476988]

charstyle2hyperlink (CS5, WIN)

Hans Haesler
  
Beiträge gesamt: 5826

27. Jul 2011, 20:40
Beitrag # 13 von 21
Beitrag ID: #476995
Bewertung:
(11624 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

ich setze GREP gerne ein, aber wenn es ohne RegExp geht, bevorzuge ich TEXT.

Gruss, Hans


als Antwort auf: [#476986]

charstyle2hyperlink (CS5, WIN)

Martin Fischer
  
Beiträge gesamt: 12791

27. Jul 2011, 22:13
Beitrag # 14 von 21
Beitrag ID: #477000
Bewertung:
(11602 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

so geht es mir ja auch.
Wahrscheinlich spielt da die Gewohnheit eine Rolle.
Und bei der Annäherung an GREP hat man auch schnell das Gefühl, man müsse sich besonders anstrengen und was denken. TEXT ist eben so, wie man schreibt.

Danke.


als Antwort auf: [#476995]

charstyle2hyperlink (CS5, WIN)

cwenet
Beiträge gesamt: 1140

28. Jul 2011, 07:36
Beitrag # 15 von 21
Beitrag ID: #477001
Bewertung:
(11551 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

ich habe jetzt versucht nur nach dem Zeichenformat zu suchen und dachte,
es reicht wenn ich die beiden Zeilen auskommentiere:

//myFindVal = "\\d+";
//doSearchAndReplace(myFindVal, app.activeDocument);

Jetzt passiert garnichts mehr.
Irgendwie komme ich da nicht klar und habe noch etwas übersehen.

Ich bitte um nochmalige Hilfe.

Danke und Grüße
Christoph


als Antwort auf: [#477000]
X

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
02.07.2024

Online
Dienstag, 02. Juli 2024, 10.00 - 10.30 Uhr

Webinar

In diesen beiden kostenlose Webinaren erfahren Sie, wie Sie mit Hilfe von Enfocus Griffin und dem Impressed Workflow Server Ihren LFP-Workflows optimieren können. 18.06.2024: So optimieren Sie Ihre Prozesse mit Enfocus Griffin 02.07.2024: So sparen Sie Zeit und Geld mit Impressed Workflow Server in der LFP-Edition Griffin: Griffin ist das leistungsstarke Kraftpaket für das automatische Nesting im Großformatdruck. Dank eines ausgeklügelten, KI-basierten Nesting-Algorithmus können Sie mit Griffin Vorlagen schnell und effizient vernutzen – und das klappt auch mit unregelmäßigen Formen perfekt. Das spart Ihnen unzählige Stunden, die Sie bisher mit dem manuellen Nesting und Ausschießen verbracht haben. Einige wichtige Funktionen ≡ Anlage von Beschnittzugaben ≡ Automatische Erzeugung der Schnittkontur ≡ Erstellung von Strichcodes, Textmarkierungen und Registrierungen IWS LFP Edition: Komplizierte, kleinteilige Aufträge; alles sehr speziell; seit Jahren bewährte Prozesse – da können wir nichts standardisieren und automatisieren! Das sagen viele Großformatdrucker – aber stimmt das wirklich, ist dem tatsächlich so? Mit dem IWS LFP Edition automatisieren Sie Ihre Produktion von der Übernahme der Daten aus dem ERP-System bis zur Erzeugung der verschachtelten Druckform und der Übergabe an den RIP. Phoenix Core ist eine hochentwickelte KI-Technologie für die Planung und das Nesting von Druckerzeugnissen. Anders als herkömmliche Ausschießlösungen arbeitet Phoenix nicht auf Basis von Vorlagen, sondern erzeugt entsprechend der Maschinen- und Produktionsanforderungen druckfertige Layouts „on-the-fly“.

kostenlos

Ja

Organisator: Impressed GmbH

Kontaktinformation: E-Mailschulungen AT impressed DOT de

https://www.impressed.de/schulung.php?c=sDetail&sid=328

So optimieren Sie Ihren LFP-Workflow