Bonjour,

J'essaie de communiquer avec OOo en C++.
J'ai commencé par le début : ouvrir un document existant.

Jusque là, je n'ai pas de problème.

J'ai ensuite essayé d'ouvrir un document existant en lui appliquant un filtre (le filtre de fusion xml de Bobiciel informatique). Et là, j'ai un gros problème : OOo se bloque (pas de réponse) et je suis obligé de le fermer avec le gestionnaire de tâches.

Voici mon code d'ouverture du fichier :
****************************************
// Conversion du fichier à ouvrir en URL, avec vérification de son existence
// Le nom de fichier sera passé en paramètre dans un second temps...
OUString FileURL;
if (osl::FileBase::searchFileURL(
        OUString::createFromAscii("C:\\test.odt"),
        OUString(),
        FileURL) != osl::FileBase::E_None)
{
    std::cout << "Impossible de trouver le fichier" << std::endl;
    return EXIT_FAILURE;
}

// Nom du filtre à utiliser
OUString FilterName = OUString::createFromAscii("Fusion MaXOpenInfo (writer)");

// Conversion du fichier source de fusion en URL, avec vérification de son existence
// Le nom de fichier sera passé en paramètre dans un second temps...
OUString SourceFileURL;
if (osl::FileBase::searchFileURL(
        OUString::createFromAscii("C:\\test.xml"),
        OUString(),
        SourceFileURL) != osl::FileBase::E_None)
{
std::cout << "Impossible de lire le fichier source de fusion" << std::endl;
    return EXIT_FAILURE;
}

Reference<XInteractionHandler> xHandler = Reference<XInteractionHandler>(rOfficeServiceManager->createInstance(

OUString::createFromAscii("com.sun.star.task.InteractionHandler")), UNO_QUERY ); ;
if(xHandler.is())
{
    std::cout << "InteractionHandler cree !" << std::endl;
}
else
{
std::cout << "Echec de creation de l'InteractionHandler..." << std::endl;
    return EXIT_FAILURE;
}

// Initialisation des paramètres
Sequence <::com::sun::star::beans::PropertyValue> MyPropertyValues(3);
MyPropertyValues[0].Name = OUString::createFromAscii("URL");
MyPropertyValues[0].Value = makeAny(SourceFileURL);
MyPropertyValues[1].Name = OUString::createFromAscii("FilterName");
MyPropertyValues[1].Value = makeAny(FilterName);
MyPropertyValues[2].Name = OUString::createFromAscii("InteractionHandler");
MyPropertyValues[2].Value = makeAny(xHandler);


// Ouverture du fichier avec les paramètres
Reference<XComponent> xcomponent = rComponentLoader->loadComponentFromURL(
    FileURL,
    OUString::createFromAscii("_blank"),
    0,
    MyPropertyValues);
****************************************

Si je change le nom du filtre et que j'en saisis un qui n'existe pas, le fichier s'ouvre normalement...

Est-ce que vous savez d'où peut venir le problème ?

Mon environnement de travail : Windows 2000 pro, visual C++ 2005 Express Edition. Pour faire fonctionner OOo avec Visual C++, j'ai fait une petite bidouille expliquée là :
http://permalink.gmane.org/gmane.comp.openoffice.org.devel.french/402

Sylvain

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Répondre à