hi, all. i found your email addresses on the wiki of openoffice documentation 
project, and now trying to get some help from you guys.
i work for a mailing service provider, and right now i'm making a format 
converting tool, which can convert pdf doc[x] ppt[x] xls[x] to html, so that 
attachments in those formats could be viewed online, regardless of the user's 
envirenment. i can convert doc[x] and xls[x] to html now, but found some 
trouble with the ppt[x] and pdf. my code is like the following(based on the 
code found on the wiki and sdk examples). when converting ppt and pdf, there is 
always an error, but get no message information. the output would be like:

[root@M5 CppBinding]# make clean; make ; make office_connect.run 
cd /root/unoout/openoffice.org3.1_sdk/LINUXexample.out/bin && office_connect
Connected sucessfully to the office
XComponentloader successfully instanciated
xcomponent load ok
XStorable successfully instanciated
start to save file
readonly:0
haslocation:1
found a error
An error occurred: 
make: *** [office_connect.run] Error 1

questions:
1.is this caused by chosing the wrong export filter type? 
2.what filter type should i use to export html from ppt[x] and pdf? 
3.no import filter type is specified, but it worked with doc[x] and xls[x], is 
this ok? should i specify one anyway?
4.and how can i make sure the file is of doc format? eg i change whatever a 
file's name into *.doc on purpose and use this tool to convert it to html, this 
surely will cause some problem, right? can i determine whether the file to be 
imported is of the specified format or what format is the file to be imported 
is of? how could i do this?

i know i  asked a lot of questions, this might take you some time to answer, 
i'm very sorry to bother you guys, but i can not find another way to solve this 
problem. best wishes for you all, looking forward to your replies or please 
forward this mail to someone who can help. PLEASE, SO MANY THANKS.

Jack from CHINA.

INFO:
my code is based on sdk examples in the dir of 
openoffice.org/basis3.1/sdk/examples/DevelopersGuide/ProfUNO/CppBinding

[root@M5 sdk]# ./setsdkenv_unix
 ************************************************************************
 *
 * SDK environment is prepared for Linux
 *
 * SDK = /usr/lib64/openoffice.org/basis3.1/sdk
 * Office = /usr/lib64/openoffice.org3
 * Office Base = /usr/lib64/openoffice.org/basis3.1
 * URE = /usr/lib64/openoffice.org/ure
 * Make = /usr/bin
 * Zip = /usr/bin
 * C++ Compiler = /usr/bin
 * Java = /usr/local/jdk1.6.0_18/
 * SDK Output directory = /root/unoout/openoffice.org3.1_sdk
 * Auto deployment = YES
 *
 ************************************************************************



============code start=========================
#include <stdio.h>
#include <cppuhelper/bootstrap.hxx>
#include <com/sun/star/bridge/XUnoUrlResolver.hpp>
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/lang/XMultiComponentFactory.hpp>
#include <com/sun/star/frame/XComponentLoader.hpp>
#include <com/sun/star/frame/XDesktop.hpp>
#include <com/sun/star/frame/XStorable.hpp>
#include <com/sun/star/beans/PropertyValue.hpp>
using namespace std;
using namespace com::sun::star::uno;
using namespace com::sun::star::lang;
using namespace com::sun::star::bridge;
using namespace com::sun::star::io;
using namespace com::sun::star::beans;
using namespace com::sun::star::frame;
using namespace rtl;
using namespace cppu;
Reference< XMultiServiceFactory > ooConnect(){
   // create the initial component context
   Reference< XComponentContext > rComponentContext = 
defaultBootstrap_InitialComponentContext();

   // retrieve the servicemanager from the context
   Reference< XMultiComponentFactory > rServiceManager = 
rComponentContext->getServiceManager();

   // instantiate a sample service with the servicemanager.
   Reference< XInterface > rInstance =  
rServiceManager->createInstanceWithContext(
         OUString::createFromAscii("com.sun.star.bridge.UnoUrlResolver" 
),rComponentContext );

   // Query for the XUnoUrlResolver interface
   Reference< XUnoUrlResolver > rResolver( rInstance, UNO_QUERY );
   if( ! rResolver.is() ){
      printf( "Error: Couldn't instantiate com.sun.star.bridge.UnoUrlResolver 
service\n" );
      return NULL;
   }
   try {
      // resolve the uno-url
      rInstance = rResolver->resolve( OUString::createFromAscii(
         "uno:socket,host=localhost,port=2083;urp;StarOffice.ServiceManager" ) 
);

      if( ! rInstance.is() ){
         printf( "StarOffice.ServiceManager is not exported from remote 
counterpart\n" );
         return NULL;
      }

      // query for the simpler XMultiServiceFactory interface, sufficient for 
scripting
      Reference< XMultiServiceFactory > rOfficeServiceManager (rInstance, 
UNO_QUERY);

      if( ! rOfficeServiceManager.is() ){
            printf( "XMultiServiceFactory interface is not exported for 
StarOffice.ServiceManager\n" );
            return NULL;
        }       
        return rOfficeServiceManager;
   }
   catch( Exception &e ){
      OString o = OUStringToOString( e.Message, RTL_TEXTENCODING_ASCII_US );
      printf( "Error: %s\n", o.pData->buffer );
      return NULL;
   }
   return NULL;
}
int main( ) {
//retrieve an instance of the remote service manager
    Reference< XMultiServiceFactory > rOfficeServiceManager;
    rOfficeServiceManager = ooConnect();
    if( rOfficeServiceManager.is() ){
        printf( "Connected sucessfully to the office\n" );
    }

//get the desktop service using createInstance returns an XInterface type
    Reference< XInterface  > Desktop = rOfficeServiceManager->createInstance(
    OUString::createFromAscii( "com.sun.star.frame.Desktop" ));

//query for the XComponentLoader interface
    Reference< XComponentLoader > rComponentLoader (Desktop, UNO_QUERY);
    if( rComponentLoader.is() ){
         printf( "XComponentloader successfully instanciated\n" );
     }

//get an instance of the spreadsheet
Sequence < ::com::sun::star::beans::PropertyValue > pvin(1);
pvin[0].Name =OUString::createFromAscii("FilterName"); 
pvin[0].Value = Any(OUString::createFromAscii("MS PowerPoint 97"));
    Reference< XComponent > xcomponent = rComponentLoader->loadComponentFromURL(
OUString::createFromAscii("file:///home/smoutou/ppt.ppt"),
// OUString::createFromAscii("file:///home/smoutou/ta.html"),
// OUString::createFromAscii("file:///home/smoutou/bak.doc"),
// OUString::createFromAscii("file:///home/smoutou/cpp.pdf"),
        OUString::createFromAscii("_default"),
        0,
pvin);
//    Sequence < ::com::sun::star::beans::PropertyValue >());
if(!xcomponent.is())
printf("xcomponent bad"); 
else 
printf("xcomponent load ok\n");
Reference< XStorable > rcomponentStore (xcomponent, UNO_QUERY);
if( !rcomponentStore.is() ){
printf( "XStorable Not successfully instanciated\n" );
}else{
printf( "XStorable successfully instanciated\n" );
printf("start to save file\n");
printf("readonly:%d\n", rcomponentStore->isReadonly());
printf("haslocation:%d\n", rcomponentStore->hasLocation());
try{
Sequence < ::com::sun::star::beans::PropertyValue > pv(1);
pv[0].Name =OUString::createFromAscii("FilterName"); 
pv[0].Value = Any(OUString::createFromAscii("HTML (Impress)"));
rcomponentStore->storeAsURL(OUString::createFromAscii("file:///home/smoutou/ppt.ppt.html"),
//rcomponentStore->storeToURL(OUString::createFromAscii("file:///home/smoutou/ppt.ppt.html"),
pv);
//Sequence < ::com::sun::star::beans::PropertyValue >());
}
catch(Exception e)
{
printf("found a error\n");
OString o = OUStringToOString( e.Message, RTL_TEXTENCODING_ASCII_US );
printf( "An error occurred: %s\n", o.pData->buffer );
xcomponent->dispose();
return 1;
}
}
xcomponent->dispose();
    return 0;
}
============code end=========================

2011-06-23 




王磊 /  Lei Wang完美世界(北京)网络技术有限公司
Beijing Perfect World Network Technology Co., Ltd.

地址:北京市朝阳区北苑路86号院 306号楼(100101)
Addr:Building 306, #86 Beiyuan Road, Chaoyang District, Beijing 100101, China
信息部 /  邮件开发工程师
电话:(8610)58858555-1000 手机:15810028663
传真:(8610)58858555 
邮箱:wanglei100...@wanmei.com
www.wanmei.comCopyright@ 2004-2009 Perfect World Co.,Ltd.All rights reserved.

Attachment: office_connect.cxx
Description: Binary data

Attachment: Makefile
Description: Binary data

Reply via email to