Index: check_packages.py
===================================================================
--- check_packages.py	(revision b52f47fcd4a788dedcabf5e71393aef7b480e741)
+++ check_packages.py	(revision 61c93b3cfc5d374f5a5c067e1dc2cb6cda8b158b)
@@ -24,5 +24,5 @@
     'wx':{'version':'2.8.12.1','import_name':'wx','test':'__version__'},
     'matplotlib':{'version':'1.1.0','import_name':'matplotlib','test':'__version__'},
-    'pisa':{'version':'3.0.28','import_name':'ho.pisa','test':'__version__'},
+    'xhtml2pdf':{'version':'3.0.33','import_name':'xhtml2pdf','test':'__version__'},
     'sphinx':{'version':'1.2.1','import_name':'sphinx','test':'__version__'},
     'unittest-xml-reporting':{'version':'1.10.0','import_name':'xmlrunner','test':'__version__'},
Index: sasview/setup_exe.py
===================================================================
--- sasview/setup_exe.py	(revision 4172557c9635687172f37240700561fa30cc6944)
+++ sasview/setup_exe.py	(revision 61c93b3cfc5d374f5a5c067e1dc2cb6cda8b158b)
@@ -308,5 +308,5 @@
 packages = [
     'matplotlib', 'scipy', 'encodings', 'comtypes',
-    'win32com', 'ho.pisa', 'bumps',
+    'win32com', 'xhtml2pdf', 'bumps',
     ]
 packages.extend([
Index: src/sas/guiframe/gui_manager.py
===================================================================
--- src/sas/guiframe/gui_manager.py	(revision a4340d15b57fa97c7b1aa5163477cfd700794496)
+++ src/sas/guiframe/gui_manager.py	(revision 4d5c42fc789185b8412566fb013f069f1b6948f8)
@@ -2129,10 +2129,11 @@
                     logging.error("Error in _onTutorial: %s" % sys.exc_value)
                     try:
-                        #in case when the pdf default set other than acrobat
-                        import ho.pisa as pisa
+                        # Try an alternate method
+                        logging.error("Could not open the tutorial pdf, trying xhtml2pdf")
+                        from xhtml2pdf import pisa
                         pisa.startViewer(path)
                     except:
+                        logging.error("Could not open the tutorial pdf with xhtml2pdf")
                         msg = "This feature requires 'PDF Viewer'\n"
-                        msg += "Please install it first (Free)..."
                         wx.MessageBox(msg, 'Error')
             else:
@@ -2142,10 +2143,11 @@
                 except:
                     try:
-                        #in case when the pdf default set other than preview
-                        import ho.pisa as pisa
+                        # Try an alternate method
+                        logging.error("Could not open the tutorial pdf, trying xhtml2pdf")
+                        from xhtml2pdf import pisa
                         pisa.startViewer(path)
                     except:
-                        msg = "This feature requires 'Preview' Application\n"
-                        msg += "Please install it first..."
+                        logging.error("Could not open the tutorial pdf with xhtml2pdf")
+                        msg = "This feature requires the 'Preview' application\n"
                         wx.MessageBox(msg, 'Error')
 
Index: src/sas/perspectives/fitting/report_dialog.py
===================================================================
--- src/sas/perspectives/fitting/report_dialog.py	(revision d06ae30ac5ee253d15e9419032e938ebd5747771)
+++ src/sas/perspectives/fitting/report_dialog.py	(revision 4ec242ef37ff5f92d91a892156e04d092559af32)
@@ -17,4 +17,5 @@
 import os
 import wx.html as html
+import logging
 
 _STATICBOX_WIDTH = 480
@@ -297,16 +298,20 @@
         """
         Create a PDF file from html source string.
+        Returns True is the file creation was successful. 
         
         : data: html string
         : filename: name of file to be saved
         """
-        import ho.pisa as pisa
-        f = file(filename, "wb")
-        # pisa requires some extra packages, see their web-site
-        pdf = pisa.CreatePDF(data, f)
-
-        # close the file here otherwise it will be open until quitting
-        #the application.
-        f.close()
-        self.Update()
-        return not pdf.err
+        try:
+            from xhtml2pdf import pisa
+            # open output file for writing (truncated binary)
+            resultFile = open(filename, "w+b")
+            # convert HTML to PDF
+            pisaStatus = pisa.CreatePDF(data, dest=resultFile)
+            # close output file
+            resultFile.close()
+            self.Update()
+            return pisaStatus.err
+        except:
+            logging.error("Error creating pdf: %s" % sys.exc_value)
+        return False
Index: src/sas/perspectives/invariant/report_dialog.py
===================================================================
--- src/sas/perspectives/invariant/report_dialog.py	(revision 794922220f2fb3b23dd08c648aabf87b4850596c)
+++ src/sas/perspectives/invariant/report_dialog.py	(revision 4ec242ef37ff5f92d91a892156e04d092559af32)
@@ -18,4 +18,5 @@
 import os
 import wx.html as html
+import logging
 ISPDF = False
 if sys.platform == "win32":
@@ -246,19 +247,21 @@
     def HTML2PDF(self, data, filename):
         """
-        Create a PDF file from html source string. 
+        Create a PDF file from html source string.
+        Returns True is the file creation was successful. 
         
         : data: html string
         : filename: name of file to be saved
         """
-        import ho.pisa as pisa
-        f = file(filename, "wb")
-        # pisa requires some extra packages, see their web-site
-        pdf = pisa.CreatePDF(data, f)
-        # close the file here otherwise it will be open until quitting
-        #the application.
-        f.close()
-
-        return not pdf.err
-
-        
-        
+        try:
+            from xhtml2pdf import pisa
+            # open output file for writing (truncated binary)
+            resultFile = open(filename, "w+b")
+            # convert HTML to PDF
+            pisaStatus = pisa.CreatePDF(data, dest=resultFile)
+            # close output file
+            resultFile.close()
+            self.Update()
+            return pisaStatus.err
+        except:
+            logging.error("Error creating pdf: %s" % sys.exc_value)
+        return False
