Skip to main content
Known Participant
February 12, 2023
Question

Add button in VBA

  • February 12, 2023
  • 4 replies
  • 1033 views

I am struggling to add a button using IAC code.

 

Using these references I can't find all the properties to set for a button.

https://opensource.adobe.com/dc-acrobat-sdk-docs/library/interapp
https://opensource.adobe.com/dc-acrobat-sdk-docs/library/jsapiref

I did just find

https://opensource.adobe.com/dc-acrobat-sdk-docs/library/jsdevguide/JS_Dev_AcrobatForms.html

but still having issues.

With this code snip, the button is added, but does nothing.

btn = jso.addField("Submit_btn","button", 0, aBtnRect)

'properties
btn.buttonSetCaption("Submit Form")
btn.borderStyle = "border.b" 'beveled edges. but what I want is rounded corners.
btn.textColor = "color.black" 'error <<<<<<<<<<
btn.lineWidth = 1 'Thin Border
btn.setAction("MouseUp", "mailto:test@abc.com")

I get an error on textColor. 

 

Also a problem setting button action.

The actions window says 'Run a javascript'.  But if I add a button in the UI, both the Actions window and Select Action field say Submit a form.  The button added by code does not do anything.

This topic has been closed for replies.

4 replies

try67
Community Expert
Community Expert
February 13, 2023

That's because color.black and border.b are not strings, but objects. color.black is an array, as you saw, and border.b is actually a string, namely "beveled". So if you can't specify them directly you have to use what they represent.

Known Participant
February 13, 2023

I agree try67.  That was one of MANY tests.  The default Color object seems limited so I finally got this working.

Dim textColor[0..4] as C
textColor[0] = "RGB"
textColor[1] = "0"
textColor[2] = "0"
textColor[3] = "1"
btn.textColor = textColor

even though the js array wants the colors as numeric, this gets interpreted correctly.

 

Test, I got the email working with this code adapted from a sample I found.  Thanks.

jstext2 = <<%str%
var cSubject = "Email subject line";
var cBody = "body of message";
var cEmailURL = "mailto:test@abc.com?subject=" + cSubject + "&body=" + cBody;
this.submitForm({cURL: encodeURI(cEmailURL), cSubmitAs:"PDF"});
%str%
btn.setAction("MouseUp", jstext2)

Legend
February 13, 2023

To be clear, you can ONLY add a button with a JavaScript action. So you now need to write the JavaScript action for your button. "mailto:test@abc.com" is not (in itself) valid JavaScript. Beware especially of the need to escape quotes-in-quotes.

Bernd Alheit
Community Expert
Community Expert
February 13, 2023

You can use the Javascript method submitForm.

Known Participant
February 13, 2023

I was not able to use the Color object, but could define the color array as all character.

dim fillColor[0..4] as C
fillColor[0] = "RGB"
fillColor[1] = "0.887"
fillColor[2] = "0.734"
fillColor[3] = "0.976"
btn.fillColor = fillColor

 

But I still have the second problem of the button action not sending an email.