Skip to main content
Participant
January 30, 2011
Question

Need help creating an alternate way to place .jpg via URL

  • January 30, 2011
  • 2 replies
  • 636 views

I've created a 20-page layout where each page contains product  photos arranged in a grid. These photos are posted on our web site and  are updated often. To create the document, I laid out my frames and then  placed the URL for each image. E.g., File -> Place -> Filename = http://corpwebsite/products/productphoto1.jpg.  I repeated this for all of the products. I am using this approach  because I don't have access to the server where the photos are stored  and it saves me from having to get copies of each photo and move them to  my local hard drive. I want to automate this process so I wrote a script that would read each URL from an Excel file and place the URL. The code that doesn the place is:

Set myInDesign = CreateObject("InDesign.Application.CS4")
Set myDocument = myInDesign.ActiveDocument
Rem Specify page 5
Set myPage = myDocument.Pages.Item(5)
Rem Specify 1st frame
Set myTextFrame1 = myPage.Rectangles.Item(1)
myTextFrame1.place("http://corpserver/products/econoline.jpg")

It fails on the last line. The error message says "Cannot find the folder." It works if I replace the last line with a reference to an image stored locally:

myTextFrame1.place("C:\mypictures\econoline.jpg")

I have no idea why a scripted Place command would work differently then manually selecting File -> Place, typing a URL and clicking OK, but that's the reality. So, what I want to do now is update my script to  display the Place dialog box, paste a URL into the dialog box and click the OK button. Unfortunately, I cannot find any info on how to issue keystrokes from within a VB script.

Can anyone tell me the syntax I need to have a script:

Display the Place dialog box (CTRL + D)

Paste a value into it (CTRL + V)

Click OK

Using VB, please. Thank you.



This topic has been closed for replies.

2 replies

Ten A
Community Expert
Community Expert
January 31, 2011

Try this.

 

var cnnct = new Socket;if (cnnct.open("chuwa.iobb.net:80", "binary")) {    cnnct.write("GET /tech/images/sample1-thumb-240x125.jpg HTTP/1.0\n"        + "Host: chuwa.iobb.net\n"        + "User-Agent: Mozilla/5.0 (Windows NT 5.1; ja)\n"        + "Connection: close\n\n");    var rply = cnnct.read(999999);    cnnct.close();    }var myfile = new File ("/test.jpg");if (myfile.open('w')){    myfile.encoding = "BINARY";    myfile.write(rply);    myfile.close();    }

 

 

It is different way to get image from wab server in Javascript. You can use DoScript method in VB script.

SoCalMXAuthor
Participant
January 30, 2011

There is a typo in my post. The line that reads "The code that doesn the place is:" should say "The code that does the place is:"

Kasyan Servetsky
Legend
January 31, 2011

You have to download the image first and then place it — you can't place it directly from web. I don't know how to do this in VB so I wrote this part in JS and called it via DoScript.

Here is an example (tested on CS3):

Private Sub PlaceImage_Click()
    Set myInDesign = CreateObject("InDesign.Application.CS3")
    Set myDocument = myInDesign.ActiveDocument
    Set myPage = myDocument.Pages.Item(5)
    Set myTextFrame1 = myPage.Rectangles.Item(1)
    myJavaScript = "if( webaccesslib == undefined ) {" & vbCr
    myJavaScript = myJavaScript & "if( Folder.fs == 'Windows' ) {" & vbCr
    myJavaScript = myJavaScript & "var pathToLib = '/C/Program Files/Adobe/Adobe Bridge CS3/webaccesslib.dll';" & vbCr
    myJavaScript = myJavaScript & " libfile = new File( pathToLib );" & vbCr
    myJavaScript = myJavaScript & "var webaccesslib = new ExternalObject('lib:' + pathToLib );" & vbCr
    myJavaScript = myJavaScript & "}" & vbCr
    myJavaScript = myJavaScript & "}" & vbCr
    myJavaScript = myJavaScript & "var http = new HttpConnection('http://kasyan.ho.com.ua/images/comp2docs/comp2docs1.png');" & vbCr
    myJavaScript = myJavaScript & "http.response = new File('/c/mypictures/comp2docs1.png');" & vbCr
    myJavaScript = myJavaScript & "http.execute();" & vbCr
    myJavaScript = myJavaScript & "http.response.close();" & vbCr
    myInDesign.DoScript myJavaScript, idScriptLanguage.idJavascript
    myTextFrame1.Place "C:/mypictures/comp2docs1.png"
End Sub

Here is an interesting article on web access from InDesign by Kris Coppieters

Kasyan