Is there a script to find text and make a hyperlink? (CS4)
I'm developing an online glossary for a book project. I would like to write a script for InDesign that will find all instances of a given text---let's say, "shoe"--and add a hyperlink to each glossary entry. Is this possible, or do I have to manually search across all docs in the book to insert links? My gut tells me there's a way, but I can't seem to put my finger on it. HELP!!!
Sincerely,
FrustratedEditorNerdTryingToTeachHerselfStuff
Yes, it should be possible. Here is a script that you could use as a starting point.
Regards,
Kas
Similar Messages
-
Find text and replace with image - Help needed
Hi,<br /><br />We need to place the images as inline in the appropriate places.<br /><br />texttexttext<<test1.eps>>texttexttexttexttexttext<<test2.eps>>texttexttexttexttexttext< <test3.eps>>texttexttexttexttexttext<<test4.eps>>texttexttexttexttexttext<<test5.eps>>text texttext<br /><br />This code is helpful for placing a single image at a time, we are unable to place all the images in one shot, can anyone help me out.<br /><br />I am not a programmer.<br /><br />-----------<br />var myDoc = app.activeDocument; <br />app.findPreferences = app.changePreferences = null; <br />var math=document.search("test.eps"); <br />for (i=math.length-1; i >=0; i--)<br />{ myDir = Folder.selectDialog(); <br />AllGraphics = Folder(myDir).getFiles('test.eps') <br />for (i=0; i<math.length; i++) { app.select(anil1[i]); <br /> myDoc.place(AllGraphics[i],false); } }<br />-----------<br /><br />Note: I have taken this code from forum and we have made some changes on this.<br /><br />Kavya
Jongware,<br /><br />I try running it but gives errors:<br /><br />Error Number: 55<br />Error String: Object does not support the property or method 'changePreferences'<br />Line: 24<br />Source: app.findPreferences = app.changePreferences = null;<br /><br />This is the code I used<br /><br />// Find text and replace with image for InDesign CS3 <br />// http://www.adobeforums.com/webx?128@@.3bbf275d.59b6f012<br />var heyItsAnArray = new Array ( <br /><br /> "it contains this line!", <br /><br /> "as well as this one", <br /><br /> "or even more!", <br /><br /> "test.eps" ); <br /><br />for (arrayCount=0; arrayCount<heyItsAnArray.length; arrayCount++) <br /><br />{ <br /><br /> replaceImg (heyItsAnArray[arrayCount]); <br /><br /> } <br /><br />function replaceImg (name) <br /><br />{ var myDoc = app.activeDocument; <br /> app.findPreferences = app.changePreferences = null; <br /> var math=document.search(name); <br /> for (i=math.length-1; i >=0; i--) <br /> { myDir = Folder.selectDialog(); <br /> AllGraphics = Folder(myDir).getFiles(name) <br /> for (i=0; i<math.length; i++) { app.select(anil1[i]); <br /> myDoc.place(AllGraphics[i],false); <br /><br /> } <br /><br /> } <br /><br /> }<br /><br />Michael
-
I have been with Verizon since 1995 (I was an employee for years). I attempted to upgrade 2 of the 4 lines on our account today, but couldn't. We have an outstanding balance (though we have received no past due notice via mail, email, or text and make regular payments every month) that I would love to pay, but our bank account number was stolen, so we can't access our account until Monday. Because we were unable to pay our outstanding balance, we were told we can't order the phones today during the special promotion (that ends today). No one can help us, though we have no way of doing anything until Monday when our bank reopens and can reimburse us for the money that was stolen from us. No one in customer service can help us (they can't process the order but not ship until after we make payment on Monday, they won't honor today's promotion on Monday due to our special circumstance, nothing). They stated that "corporate" makes the rules and they have no idea how I can reach corporate to discuss the matter. Without the promotion, we will be charged full price for the phones on Monday, which will cost us an additional $300.00. Any help would be appreciated. Thanks.
I hope that you aren't complaining about dropped calls INSIDE your condo because no amount of switching or upgrading devices will solve that.
VZW will not guarantee service inside of any structure. There are just too many factors. If the problem is inside then you might want to look at one of the following:
1.) Network Extender (may cause issues for others in a condo or apartment style setting)
2.) A Google Voice Number (Free with a Gmail email address), downloading Google Hangouts Dialer and forwarding your calls to the GVN so that you can make and receive calls over Wi-Fi. -
Is it possible to change the colour of the Pages' skin, since it is grey, is there any way to change it and make it less tedious?
fruhulda wrote:
If you see any grey"background" if is on the left and that is the comment field.
Hi fruhulda
It's not the comment field which is a restrictive description.
In fact it's the window's background.
Yvan KOENIG (VALLAURIS, France) lundi 26 septembre 2011 12:08:45
iMac 21”5, i7, 2.8 GHz, 4 Gbytes, 1 Tbytes, mac OS X 10.6.8 and 10.7.0
My iDisk is : <http://public.me.com/koenigyvan>
Please : Search for questions similar to your own before submitting them to the community -
How can i programmatically search, hightlight text and make annotations in PDF using JQuery?
JQuery is part of the OS and Acrobat/Reader is very isolated from the contact with the OS. If you were to write a plug-in in and add it to your copy of Acrobat/Reader you could then use that plug-in to access the OS shell.
-
I am heading to Mexico for a quick business trip, I only want to receive texts and make a call or two. What do I need to turn off to avoid ANY additional charges? Cellular Data/Data Roaming/MMS/visual voicemail? And should I turn wifi on and leave it on?
I have a new Iphone 5s.wifi is not something you can be charged for
-
If I use a pdf highlighted in Adobe Reader (metro) in another PDF reading program, one with functionality to retrieve and list various annotations on the PDF, it simply finds "sticky note" as Adobe Reader highlights the text but fails to copy and paste it into a 'highlight' comment box. I intend to use another program with this feature automatic, from this point forward, but is there any way I can retroactively and automatically do this same task to all the other work I've done with Adobe Reader? It is, as I understand, a standard function of PDF annotation.
Of course, ideally, I would also like this to be automatic in the future, as the Adobe Reader Metro App is generally well-designed, touch-interface wise. But this lacking feature makes finding my comments a much greater hassle than it should be (as I can see where I highlighted, but not what without traveling directly to the page)
Also on a side note, I apparently can't delete a sticky note from within the app, what the hellYou cannot enforce something like that. You have some options when the field is set up to allow rich text formatting, but the user can always change it.
-
Find text and replace with a pdf stored in the same folder
Hello,
I have a catalog that is updated every so often. I have written a script to find/replace the text from a .txt file. but i have a pdf that i want to insert that is part of it as well. Inside the .txt file i have the name of the document. and the pdf is stored inside the same folder as the original .indd and the .txt file.
can someone point me at some examples on how this could be done.
ThanksI use this script: it puts a txt in a text frame, check the overflow and find/replace some words with a pdf. Hope this is helpful.
Paolo
/************************FLOW************************************************
* This function looks for Overflows in the story and either resizes the *
* frame to the size of the margins (if necesary) or adds a new page and *
* a new frame, which is then linked to the previous frame.esizes the *
function flow(){
for(var i = 0; i < app.activeDocument.pages.count(); i++)
for(var b = 0; b < app.activeDocument.pages[i].textFrames.count(); b++)
if(app.activeDocument.pages[i].textFrames[b].overflows == true )
var currentPage = myDocument.pages[i];
var myPageNo = currentPage.name;
var currentFrame=currentPage.textFrames[b];
var e =currentFrame.geometricBounds[0];
var f =currentFrame.geometricBounds[1];
var g =currentFrame.geometricBounds[2];
var h =currentFrame.geometricBounds[3];
if(myPageNo %2==0){
var myMargins =currentPage.marginPreferences;
var a = currentPage.bounds[0]+myMargins.top;
var b = currentPage.bounds[1]+myMargins.right;
var c = currentPage.bounds[2]-myMargins.bottom;
var d = currentPage.bounds[3]-myMargins.left;
else{
var myMargins =currentPage.marginPreferences;
var a = currentPage.bounds[0]+myMargins.top;
var b = currentPage.bounds[1]+myMargins.left;
var c = currentPage.bounds[2]-myMargins.bottom;
var d = currentPage.bounds[3]-myMargins.right;
if (g < c)
currentFrame.geometricBounds = [a,b,c,d];
else if (g==c){
var newPage = myDocument.pages.add(LocationOptions.AFTER, currentPage);
currentPage = newPage;
myPageNo = currentPage.name;
if(myPageNo %2==0){
var myMargins =currentPage.marginPreferences;
var a = currentPage.bounds[0]+myMargins.top;
var b = currentPage.bounds[1]+myMargins.right;
var c = currentPage.bounds[2]-myMargins.bottom;
var d = currentPage.bounds[3]-myMargins.left;
var newFrame = currentPage.textFrames.add({geometricBounds:[a,b,c,d]});
newFrame.textFramePreferences.textColumnCount = 7;
newFrame.previousTextFrame = currentFrame;
else{
var myMargins =currentPage.marginPreferences;
var a = currentPage.bounds[0]+myMargins.top;
var b = currentPage.bounds[1]+myMargins.left;
var c = currentPage.bounds[2]-myMargins.bottom;
var d = currentPage.bounds[3]-myMargins.right;
var newFrame = currentPage.textFrames.add({geometricBounds:[a,b,c,d]});
newFrame.textFramePreferences.textColumnCount = 7;
newFrame.previousTextFrame = currentFrame;
//************************************END FLOW FUNCTION*********************************************
/*******************TextPlacer***************************
this script will add a text file in an existing text frame
Questo file deve essere copiato nella cartella Script di InDesign
function myGetBounds(myDocument, myPage){
var myPageWidth = myDocument.documentPreferences.pageWidth;
var myPageHeight = myDocument.documentPreferences.pageHeight
if(myPage.side == PageSideOptions.leftHand){
var myX2 = myPage.marginPreferences.left;
var myX1 = myPage.marginPreferences.right;
else{
var myX1 = myPage.marginPreferences.left;
var myX2 = myPage.marginPreferences.right;
var myY1 = myPage.marginPreferences.top;
var myX2 = myPageWidth - myX2;
var myY2 = myPageHeight - myPage.marginPreferences.bottom;
return [myY1, myX1, myY2, myX2];
/*******************ImagePlacer***************************
this script will addimages to the document by
substituting them with the name of the image file
between @s (file format included[@mypic.bmp@]),
selecting them from a specified file (see below)
and applying object styles to them, as well as
applying the right tab i necesary.
It then looks for overflows in the document. If an
overset is found, it will resize to margin size the
text frame and if overset continues, it will add a
new page and frame, which then will be linked
to the previous frame, allowing the story flow.
Questo file deve essere copiato nella cartella Script di InDesign
//Creates a new document using the specified document preset.
//Replace "myDocumentPreset" in the following line with the name
//of the document preset you want to use.
var myDocument = app.documents.add(true,app.documentPresets.item("Preset"));
//If the active document has not been saved (ever), save it.
if(app.activeDocument.saved == false){
//If you do not provide a file name, InDesign displays the Save dialog box.
app.activeDocument.save(new File("/Users/Paolo/Desktop/Documento.indd"));
function main()
var myDocument = app.documents.item(0);
var myPage = myDocument.pages.item(0);
var myTextFrame = myPage.textFrames.add({geometricBounds:myGetBounds(myDocument,myPage)});
myTextFrame.textFramePreferences.textColumnCount = 7;
myTextFrame.place(File("/Users/Paolo/Desktop/text.txt"));
//Place a text file in the text frame.
//Parameters for TextFrame.place():
//File as File object,
//[ShowingOptions as Boolean = False]
//You'll have to fill in your own file path.
//Define GREP search
var grepFind ="@@@.+@@@";
//Folders name where there are pdf, must be in the same place of the file
var myFiguresFolder = "testatine";
// Applied paragraph style
var myPStyle = myDocument.paragraphStyles.item("Paragraphstyle");
var NextPStyleCS = myDocument.paragraphStyles.item("Par_Style");
var NextPStyleEN = myDocument.paragraphStyles.item("Par_Style_en");
var NextPStyleDE = myDocument.paragraphStyles.item("Par_Style_de");
// Applied text style
var myCStyle = myDocument.characterStyles.item("text");
//Applied object style
var myOStyle = "";
var oStyle_1 = myDocument.objectStyles.item("Pictures");
var oStyle_2 = myDocument.objectStyles.item("Pictures");
var oStyle_3 = myDocument.objectStyles.item("Pictures");
//MEASUREMENTS
var maxWidth = 467; //Maximum width of an image
var maxHeight = 666; //Maximum Height of an image
var colWidth = 468; //Width of the main columb (340pt) + maximum Tab (128pt)
var maxTab = 0;
var xTab;
var xtTab;
var minTWidth = 340; //any image with a width below this will have the maximum Tab (maxTab) applied.
var PWidth; //Width of the Picture
var PHeight;//Picture Height
var myTotal;
//---------------------------------ALERTS---------------------------------\\
var notSaved = "Documento non salvato; devi prima salvare il documento";
var noFolder = "No such folder exists; "+myFiguresFolder;
var noImageMessage = "No Images were found";
var finished = " immagini sostituite"
//---------------------------------ALERTS---------------------------------\\
/************************END OF STORY*****************************************
* The object of this bit of programming is to add an empty paragraph break *
* at the end of the story, in order to make the actual script work in the case *
* that the LAST paragraph were a TABLE *
var findEnd_of_Story = "\\r(?=\\z)" //GREP for End of Story //
app.findGrepPreferences = NothingEnum.nothing; //
app.changeGrepPreferences = NothingEnum.nothing; //
app.findGrepPreferences.appliedParagraphStyle = myPStyle; //
app.findGrepPreferences.findWhat = findEnd_of_Story; //
var fItems = myDocument.findGrep(); //
var myC = fItems.length-1; //
if (fItems =!0){ //
do{ //
if (fItems.appliedParagraphStyle = myPStyle){ //
cItem = fItems[myC] //
app.changeGrepPreferences.changeTo = "$0\\r"; //
myDocument.changeGrep(); //
myC--; //
while (myC >= 0); //
try{
var myDocPath = myDocument.filePath; //Complete Path to the Current Document
catch (myError){
alert (notSaved);
//throw("");
return;
var myFFldr =Folder(myDocPath+"/"+myFiguresFolder); //Complete Path in which the figures to be placed should be found
if(myFFldr.exists){
flow();
app.findGrepPreferences = app.changeGrepPreferences = null;
app.findGrepPreferences.findWhat = grepFind;
var myFoundItems = app.activeDocument.findGrep();
var myCounter = myFoundItems.length-1
myTotal = myCounter+1;
for (i = myCounter; i >=0; i--) {
var myName = myFoundItems[i].contents.replace (/@/g, "");
app.selection = myFoundItems[i];
var fFig=app.selection[0];//Found text for
var cPStyle= fFig.appliedParagraphStyle;
var myFile = new File( myFFldr + "/" + myName);
if (myFile.exists) {
var cFig = fFig.place(myFile);
var sFig = cFig[0].parent;
switch (cPStyle){
case (myPStyle):
myOStyle =oStyle_1;
PWidth = sFig.geometricBounds[3] - sFig.geometricBounds[1];
PHeight = sFig.geometricBounds[2] - sFig.geometricBounds[0];
if (PWidth >= minTWidth){
xTab = (colWidth-PWidth);
else{
xTab =maxTab;
var currentPar = sFig.parent.paragraphs.item(0);
currentPar.leftIndent = xTab;
var nextPar= currentPar.insertionPoints[-1].paragraphs[0];
var nextParStyle = nextPar.appliedParagraphStyle;
if (nextParStyle == NextPStyleCS||nextParStyle ==NextPStyleEN||nextParStyle == NextPStyleDE){
xtTab = xTab
else {
xtTab = nextPar.leftIndent;
nextPar.leftIndent =xtTab;
sFig.appliedObjectStyle = myOStyle;
cPStyle = "";
break;
case (myPStyle):
myOStyle = oStyle_3;
sFig.appliedObjectStyle = myOStyle;
cPStyle = "";
break;
default:
myOStyle = oStyle_2;
sFig.appliedObjectStyle = myOStyle;
cPStyle = "";
break;
var oFig = sFig;
sFig = ""
flow();
//alert(myTotal + finished);
else{
alert(noFolder);
var myDocument = app.documents.item(0);
//Clear the find/change grep preferences.
app.findGrepPreferences = NothingEnum.nothing;
app.changeGrepPreferences = NothingEnum.nothing;
//Set the find options.
app.findChangeGrepOptions.includeFootnotes = false;
app.findChangeGrepOptions.includeHiddenLayers = false;
app.findChangeGrepOptions.includeLockedLayersForFind = false;
app.findChangeGrepOptions.includeLockedStoriesForFind = false;
app.findChangeGrepOptions.includeMasterPages = false;
//Regular expression to use
app.findGrepPreferences.findWhat = "<(.+?)>";
//Apply the change to 24-point text only.
//app.findGrepPreferences.pointSize = 24;
//app.changeGrepPreferences.underline = true;
var myFoundItems = app.activeDocument.findGrep();
var myCounter = myFoundItems.length-1
myTotal = myCounter+1;
//alert("occorrenze" + myTotal);
app.changeGrepPreferences.changeTo= "$1";
app.changeGrepPreferences.appliedCharacterStyle= myDocument.characterStyles.item("head");
myDocument.changeGrep();
for (i = myCounter; i >=0; i--) {
var myName = myFoundItems[i].contents.replace ("/</g", "");
var myName = myFoundItems[i].contents.replace ("/>/g", "");
app.selection = myFoundItems[i];
var fFig=app.selection[0];//Found text for
var myCStyle = myDocument.characterStyles.item("head");
app.selection[0].applyCharacterStyle(myCStyle, true);
//Clear the find/change preferences after the search.
app.findGrepPreferences = NothingEnum.nothing;
app.changeGrepPreferences = NothingEnum.nothing;
main(); -
Anyway to Find text and replace with variable FM10?
I've just been informed that the current documentation set I've done will have different versions. I've created a brand variable, but I was wondering whether there was a quick way to find the text I need to convert, then replace it with the variable I've created?
MarkUnless Fm10 is different than FM7 in this regard, you can copy an instance of the NewBrand variable in the text flow, then do an
Edit > Find/Change
Find [Text:] [OldBrand]
Change [By Pasting]
The usual issue is that each paste is not just pasting the variable, but also pasting the formats of the source instance of the variable. If all instances of the target text are the same format, say "Body", then this is not a problem.
Otherwise, use the [Change & Find] button. Tweak formats as you go.
I imagine that there are aftermarket enhancements for this. In FM10, you might even be able to script it, but it the number of changes is manageable, [Change & Find] suffices. -
How to make a script for find text object?
Hi everyone
I want to make a script for find and select text object and then find next, find next, and so on, but without any open dialog
Is that possible make a script for this?
app.findGrepPreferences = app.changeGrepPreferences = null;
app.findGrepPreferences.findWhat = "(\[\x{2022}\])|(\x{25CF})";
app.findGrep();
thanks
RegardYou already have that. A script does not 'find, select, find next' - it finds all texts as soon as you execute the 'app.findGrep' command.
-
Rollover text and images in Captivate CS4
Hi All,
I am trying to create a rollover image and rollover caption that both appear at the same time when I move over a particular area of my slide. In my example below i want to rollover the arm of the body and have the text and the image appear at the same time. I have tried to put the 2 rollover areas over each other but this seems to give priority to whichever rollover area is on top. Any hints to make this work would be of great help!!Hi there
What you need to do is abandon each rollover type. Instead, insert a Rollover Slidelet. Then insert a Text Caption and an Image into the Slidelet area. Then on a single mouseover, display the slidelet. Time the Slidelet as needed.
Either that or create a larger image containing both the Text Caption and the Image as a large consolidated image. Then just insert a Rollover Image that shows the larger consolidated image when moused over.
Cheers... Rick
Helpful and Handy Links
Captivate Wish Form/Bug Reporting Form
Adobe Certified Captivate Training
SorcerStone Blog
Captivate eBooks -
Is there a script for apache to automatically make a "download as tar"
link?
For example if you run apache and set /some/folder as documentRoot, if there is no index.html or .php there it will display the folders and files.
I want to make apache also display a link for eveyr folder such as "Download as tar" and it would automagically tar the folder and offer for download.
Possible?Generally speaking, if a script doesn't run in a later version, you can put it in a subfolder withteh correct version number as the name and it will work. For CS3 that would be "Version 5.0 Scripts" without the quotes.
That said, if you have Acrobat pro, it's probably easier to use the extract pages command... -
Text and elements disappear in CS4 InDesign.
I have 2 8.5x11 Indesign CS4 docs that I tried to place in one 11x17 doc side by side. Text and linked graphics disappear. Why?
Thanks[Moved to InDesign Forum]
Hunt -
Is there a script to find and replace glyphs?
I am using Adobe Illustrator CC 2014, Build 10.1.0.70.
I am looking for a way to quickly find and change certain glyphs within a typeface much like InDesign's Find/Change feature with a script that runs through saved queries. Is this at all possible..?Hi Steve, thanks for your quick response.
My apologies I should've made myself clearer... I was more thinking about a script to run a chain of preset saved find and replace queries together. I have 48 individual glyphs from one typeface that I need to consistently apply across whole ducunents. Rather than click through each glyph for every single document I come across I was hoping there was a way to automate the process.
Thanks -
I am new to Automator and AppleScript. I need to create a simple application where I can drop txt files onto, the app would then search the document for the word "Failed". Then show a dialogue showing the result of the find. Please can someone point me in the right direction! Thank you in advance.
Ok this is starting to get a bit unwieldy to post to the list so I also put a copy in my dropbox folder at http://dl.dropbox.com/u/13002668/DropFile.scpt
In addition to what it did before this will save the serial number and validation code to a file 'FailedBatterySerialNumbers.txt' on your Desktop. I added the name of the file that the serial number came from. Figured you might want to go back and reference the original file.
The file looks like:
Untitled 2.txt
serial-number 4H6230BBVTH
Battery Validation Code NBD-75B1770F-02
Untitled 2.txt
serial-number 4H6230BBVTH
Battery Validation Code NBD-75B1770F-02
enjoy, regards
on open droppedFiles
-- Set destination Folder on Desktop
set destDir to (path to desktop) as text
set destDir to alias (destDir & "FailedBatteries:")
-- Set string to search for in log files
set grepString to "failed"
-- For each file dropped on us look for the grepString
-- If found move the file to the destDir
repeat with aFile in the droppedFiles
try
set ret to do shell script "grep -i " & grepString & " " & quoted form of POSIX path of aFile
tell application "Finder" to move aFile to destDir
saveData(aFile)
on error msg number num
if num ≠ 1 then
display dialog "Unknow errror: " & msg & " Number:" & num & " in file:" & aFile
else
display dialog "KGB:" & grepString & " not found in file:" & return & aFile
end if
end try
end repeat
end open
on saveData(aFile)
try
set values to do shell script "grep -E '^serial-number|^Battery Validation Code' " & quoted form of POSIX path of aFile
on error msg number num
if num ≠ 1 then
display dialog "saveData:unknow errror: " & msg & " Number:" & num & " in file:" & aFile
else
display dialog "saveData: string not found in file:" & return & aFile
return
end if
end try
tell application "Finder" to set aFile to (name of aFile)
set fileName to (path to desktop as text) & "FailedBatterySerialNumbers.txt"
try
set fnum to open for access fileName with write permission
on error msg number num
close access file fileName
display dialog "File error:" & msg & " number:" & num
return
end try
set ourEof to get eof of fnum
write (aFile & return & values & return & return) to fnum starting at ourEof + 1
close access file fileName
return
end saveData
Maybe you are looking for
-
when I open logic express 8 with eyetv open but not active and i close logic express 8 and make eyetv active eyetv won't show closed captioning even though closed captioning is turned on. When I totally close eyetv and reopen eyetv and open a live t
-
How to transfer photos from the computer to the iPhone?
How to transfer photos from the computer to the iPhone?
-
How to import ALL MAIL from Gmail to OSX Mail?
I am trying to migrate my mail system over to OSX Mail from Google Mail, but I can't seem to make "All Mail" show up as an option in OSX Mail, even though I have the folder checked in the Gmail settings to share with outside apps. I am on Yosemite
-
Hi my itune on my PC has stopped working and every time i try to reinstall it it doesn't work properly and asks me if i want to totally remove itunes or replace/repair. I choose replace/repair but it just closes immediately and says it was interrupt
-
While going through a verify/repair disk with OSX open, it said I needed minor repairs. I booted the OSX installation disk and ran verify/repair disk on my HD and drive. Both times the error said "1 HFS Volume Checked; 1 volume could not be repaired