title: PDFCreator with OpenOffice files
body: <p>I use a Windows Web Server 2008 with ruby, PDFCreator, Microsoft Office, and OpenOffice to convert files to PDF automatically. The setup works ok for Microsoft Office files but I have not been able to get it to work automatically with OpenOffice files (e.g. .sxw). PDFCreator is able to convert .sxw files without problem when I do it manually but throws the following error when I try it with my ruby script below. </p>
  
  <p>Error: 1 Description: The ActiveX-Server has not been started! Please use function \"cStart()\" to start the ActiveX-Server!</p>
  
  <pre><code>def convert( filename, data )
    require 'win32ole'
  
    dirpath = File.join( '/', 'files' )
    filepath =  File.join( dirpath, filename )
    puts filepath
    filepath_out = File.join( dirpath, 'output.pdf' )
    begin
       File.open( filepath, 'wb+' ) { |f| f.write( data ) }
       puts File.exists?( filepath ).inspect
       pdfcreator = WIN32OLE.new( 'PDFCreator.clsPDFCreator' )
       event = WIN32OLE_EVENT.new( pdfcreator )
       event.on_event( 'eReady' ) do
          File.open( filepath_out, 'rb' ) { |f| update_attribute( :data_converted, f.read ) }
          $printed = true
       end
       event.on_event( 'eError' ) do
          pdfcreator.cClose()
          raise 'error'
       end
       if !pdfcreator.cIsPrintable( filepath )
          raise 'error'
       end
       pdfcreator.cStart( '/NoProcessingAtStartup' )
       pdfcreator.setproperty( 'cOption', 'UseAutosave', 1 )
       pdfcreator.setproperty( 'cOption', 'UseAutosaveDirectory', 1 )
       pdfcreator.setproperty( 'cOption', 'AutosaveFormat', 0 )
       pdfcreator.setproperty( 'cDefaultprinter', 'PDFCreator' )
       pdfcreator.cClearCache()
       pdfcreator.setproperty( 'cPrinterStop', false )
       pdfcreator.setproperty( 'cOption', 'AutosaveDirectory', File.dirname( filepath_out ) )
       pdfcreator.setproperty( 'cOption', 'AutosaveFilename', File.basename( filepath_out ) )
       $printed = false
       pdfcreator.cPrintfile( "C:\\files" + File.basename( filepath ) )
       started_at = Time.new
       loop {
          pdfcreator.cOption( 'UseAutosave' ) # noop to get ready event
          break if $printed
          if ( Time.new - started_at )&gt;TIMEOUT
             raise 'timeout'
          end
          sleep 0.5
       }
    rescue =&gt; e
       raise e
    ensure
       begin
          pdfcreator.cClearCache()
          pdfcreator.cClose()
       rescue
       end
       begin
          File.delete( filepath ) if File.exists?( filepath )
          File.delete( filepath_out ) if File.exists?( filepath_out )
       rescue
       end
  
    end
  </code></pre>
  
  <p>Any ideas?</p>
  
  <p>Thanks,
  Peder</p>