diff --git a/fillpdf.module b/fillpdf.module
index 6ac643f8ad6eefbbc88597be5c04ee42a46a8c56..6bf8169d74b1d1b6f59dd97f440d1a168c5173e8 100644
--- a/fillpdf.module
+++ b/fillpdf.module
@@ -6,7 +6,7 @@
  * Allows mappings of PDFs to site content.
  */
 
-define("SERVLET_URL", "http://ocdevel.com:8080/fillpdf_itext/fillpdf_itext");
+define("SERVLET_URL", "http://ocdevel.com:8080/fillpdf_servlet/xmlrpc");
 
 /**
  * Implementation of hook_help().
@@ -462,30 +462,19 @@ function fillpdf_update_field(&$pdf_form, &$field, $old_key) {
  */
 function fillpdf_generate_fields_from_pdf($fid) {
   
-  //currently disabled file upload 
-  
-  /*$file = file_check_upload('pdf_upload');
-  //handle the file, using file_save_upload, or something similar
-  if (!$file) return;
-
-  //save the node (we need the nid before uploading)
-  $title->title=$file->filename;
-  
-  $filename="{$title}.pdf";
-  $file = file_save_upload($file,"fillpdf/{$filename}");
-  // get form fields from web service / CGI script
-  */
-
-  $form_url=db_result(db_query("SELECT url FROM {fillpdf_forms} WHERE fid=%d", $fid));
-  $handle = fopen(SERVLET_URL ."?method=parse&form_url={$form_url}", "rb");
-  $contents = stream_get_contents($handle);
-  fclose($handle);
-
-  // parse XML
+	$form_url=db_result(db_query("SELECT url FROM {fillpdf_forms} WHERE fid=%d", $fid));
+	if ($fp = fopen($form_url, 'r')) {
+	   $content = '';
+	   // keep reading until there's nothing left
+	   while ($line = fread($fp, 1024)) {
+	      $content .= $line;
+	   }
+   }	
+
+  $result = xmlrpc(SERVLET_URL, 'fillpdf_xmlrpc.parse_pdf',base64_encode($content));	
+  $contents = base64_decode($result);
   $xml = simplexml_load_string( $contents );
   
-  // webform_129.pdf => webform_129 (content-type name)
-  $filename=substr($filename, 0, -4);
     
   //create fields
   $i=1;
@@ -514,10 +503,12 @@ function fillpdf_generate_fields_from_pdf($fid) {
 //    $new_field->label = $new_field->pdf_key = $field['name'];  
 //    $new_field->type=$field_type;
 //    $fields[]=$new_field;
-    if ($field['name']) {
-      if (!(db_result(db_query("SELECT 1 FROM {fillpdf_fields} WHERE fid=%d AND pdf_key='%s'", $fid, $field['name'])))) {
+//	$field['name']=(string)$field['name']; //d6 seems to have required this... 
+    $field_name=(string)$field['name'];
+    if ($field_name) {
+      if (!(db_result(db_query("SELECT 1 FROM {fillpdf_fields} WHERE fid=%d AND pdf_key='%s'", $fid, $field_name)))) {
         db_query("INSERT INTO {fillpdf_fields} (fid, pdf_key, label) VALUES(%d, '%s', '%s')",
-          $fid, $field['name'], $field['name']);  
+          $fid, $field_name, $field_name);  
       }
     }
     $i++;
@@ -559,14 +550,26 @@ function fillpdf_generate_pdf() {
         
     // get the XFDF file contents  
     include_once(drupal_get_path('module', 'fillpdf') .'/xfdf.inc');
-    $xfdf = createXFDF($fillpdf_info->url, $fields);
+    $xfdf_data = createXFDF($fillpdf_info->url, $fields);
     $download_name = preg_replace('/[^a-zA-Z0-9_]/', '', $fillpdf_info->title) .'.pdf';
     //$download_name = preg_match('|\/[^\/].*$|',$fillpdf_info->url);
-    $dir = file_directory_path()."/xfdf";
-    file_check_directory($dir, FILE_CREATE_DIRECTORY);    
-    $res = file_save_data($xfdf, "xfdf/{$download_name}.xfdf", FILE_EXISTS_REPLACE);
-    if (!$res) return; //couldn't save file  
-    $xfdf_file = $host .'/'. $res;        
-      
-    header("Location: ". SERVLET_URL ."?method=merge&title={$download_name}&pdf={$fillpdf_info->url}&xfdf={$xfdf_file}");  
+    
+    if ($fp = fopen($fillpdf_info->url, 'r')) {
+	   $pdf_data = '';
+	   // keep reading until there's nothing left
+	   while ($line = fread($fp, 1024)) {
+	      $pdf_data .= $line;
+	   }
+   }	 
+
+    $result = xmlrpc(SERVLET_URL, 'fillpdf_xmlrpc.merge_pdf',base64_encode($pdf_data),base64_encode($xfdf_data));
+    if($result){
+	    header('Content-type:application/pdf');
+	    header('Content-disposition:attachment; filename="'.$download_name.'"');	
+	    echo base64_decode($result);
+    	exit;
+    }else{
+    	drupal_set_message('FillPDF servlet error, please contact tylerrenelle@gmail.com','error');
+    	drupal_goto("<front>");
+   	}
 }