How to Make a PDF Fill-in Form Saveable

These notes apply to Acrobat X Pro. I don’t know about other versions or how to do this with free software. Adobe software is out of my price range too. I used my employer’s copy.

Good instructions for creating the fill-in are here.

Adobe provides instructions for making the fill-in saveable here, but it’s not clear the in their step 3 you want to pick File->Save As->Reader Extended PDF->Enable Additional Features…, not Enable Adding Text In Documents. That’s all it takes.

Sample saveable fill-in form.

mindbody api

Some notes for getting started with the MindBody API.

Read this:

Follow the partner program link on that page and sign up. These pages are often down; it’s not you.

Their docs:

Download the MBO’s API expamples.

These examples have some errors. Some includes reference files with the names in the wrong case – they must be working on Windows. Calls to php time functions now require a timezone.

There is no example of using the SiteService or GetActivationCode request that you need to start with the API.

Here is my getActivationCode.php


if (!isset($_POST['submit'])) {
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "">
                <title>Get Activation Code Demo</title>
                <link rel="stylesheet" type="text/css" href="../styles/site.css" />

        <form method="post" action="getActivationCode.php">
                Source Name:
                <input type="text" size="25" name="sName"/><br/>
                <input type="password" size="25" name="password"/><br/>
                <input type="text" size="5" name="siteID" value="-99"/><br/>
                <input type="submit" value="submit" name="submit"/>
} else {
$sourcename = $_POST["sName"];
$password = $_POST["password"];
$siteID = $_POST["siteID"];

// initialize default credentials
$creds = new SourceCredentials($sourcename, $password, array($siteID));

$siteService = new MBSiteService(true); //false for no debug!

$result = $siteService->GetActivationCode();

/* $cdsHtml = '<table><tr><td>ID</td><td>Name</td></tr>';
$cds = toArray($result->GetClassDescriptionsResult->ClassDescriptions->ClassDescription);
foreach ($cds as $cd) {
        $cdsHtml .= sprintf('<tr><td>%d</td><td>%s</td></tr>', $cd->ID, $cd->Name);
$cdsHtml .= '</table>';

echo($cdsHtml);  */

Here is ../includes/siteService.php mbApi.php is provided in the mindbody sample code.

class MBSiteService extends MBAPIService
        function __construct($debug = false)
                $serviceUrl = "http://" . GetApiHostname() . "/0_5/SiteService.asmx?wsdl";

                $this->debug = $debug;
                $option = array();
                if ($debug)
                        $option = array('trace'=>1);
                $this->client = new soapclient($serviceUrl, $option);
         * Returns the raw result of the MINDBODY SOAP call.
         * @param int $PageSize
         * @param int $CurrentPage
         * @param string $XMLDetail
         * @param string $Fields
         * @param SourceCredentials $credentials A source credentials object to use with this call
         * @return object The raw result of the SOAP call
        public function GetActivationCode(SourceCredentials $credentials = null)
                $params = $this->GetMindbodyParams($additions=array(), $this->GetCredentials($credentials), $XMLDetaili=null, $PageSize=null, $CurrentPage=null, $Fields=null, $UserCredentials = null);

                $result = $this->client->GetActivationCode($params);

                if ($this->debug)
                        DebugResponse($this->client, $result);

                return $result;