2009-06-23 9 views
1

J'ai besoin de pouvoir autoriser les utilisateurs à exporter leurs fichiers .doc (qu'ils téléchargent) dans une variété de formats. J'ai commencé à utiliser OO SDK, et j'ai mis en place des filtres personnalisés en utilisant XSLT également. Tout fonctionne bien et je suis capable d'exporter des documents Word en pdf, etcConversion de Doc en utilisant OpenOffice SDK

Cependant, je veux exécuter cela en tant que service Web. Je souhaite exécuter ce service de conversion sur un nœud dédié, de sorte que tous les téléchargements de fichiers par les utilisateurs souhaitant convertir leur document atteignent ce nœud dédié. Mon application Web elle-même est basée sur PHP. Quelle est la meilleure façon d'effectuer la conversion en utilisant OO SDK? Je devrai également stocker le fichier résultant dans DB. Dois-je exécuter plusieurs instances de OO et alimenter chaque fichier à convertir en une instance spécifique? Et, ai-je besoin d'écrire un serveur personnalisé pour gérer cela, car je ne sais pas si OO est multithread. Tout conseil grandement apprécié.

+0

J'ai essayé de faire ceci à mon travail mais nous avons dû le laisser tomber, puisque nous ne pouvions pas obtenir le placement passable d'éléments de document comme les dispositions non standard et les images d'OOo. Nous allons plutôt faire à peu près la même configuration sauf avec MS Office comme convertisseur. – Chris

Répondre

2

Avez-vous envisagé d'utiliser JODConverter? Il fait tout le travail lourd pour vous.

+0

Ne pas oublier son cousin basé sur Python, PyODConverter! –

4

En utilisant les DLLs cli essayez avec le code suivant

public conversion() 
{ 
     unoidl.com.sun.star.uno.XComponentContext localContext =uno.util.Bootstrap.bootstrap(); 

     unoidl.com.sun.star.lang.XMultiServiceFactory multiServiceFactory =(unoidl.com.sun.star.lang.XMultiServiceFactory)localContext.getServiceManager(); 

     XComponentLoader componentLoader =(XComponentLoader)multiServiceFactory.createInstance("com.sun.star.frame.Desktop"); 

     XComponent xComponent = componentLoader.loadComponentFromURL(PathConverter(FileName1),"_blank", 0,new PropertyValue[] {MakePropertyValue("Hidden", true)}); 

     unoidl.com.sun.star.beans.PropertyValue [] propertyValues; 
     propertyValues = new unoidl.com.sun.star.beans.PropertyValue[2]; 
     // Setting the flag for overwriting 
     propertyValues[0] = new unoidl.com.sun.star.beans.PropertyValue(); 
     propertyValues[0].Name = "Overwrite"; 
     propertyValues[0].Value = new Any(true); 
     // Setting the filter name 
     propertyValues[1] = MakePropertyValue("FilterName", "HTML (StarWriter)"); 
     /*propertyValues[1] = new unoidl.com.sun.star.beans.PropertyValue(); 
     propertyValues[1].Name = "FilterName"; 
     propertyValues[1].Value = new uno.Any("HTML (StarWriter)"); // writer_pdf_Export , swriter: MS Word 97 , HTML (StarWriter) ,*/ 

     XStorable xStorable = xComponent as XStorable;xStorable.storeToURL(PathConverter(FileName),propertyValues); 
} 

Pour une liste complète des exportations à regarder de filtres, dans une autre réponse que je donnais auparavant.

Questions connexes