2016-07-25 4 views
0

J'ai cherché une réponse, mais rien n'a aidé jusqu'à présent. J'ai une méthode que je veux utiliser pour créer un fichier odt et le remplir avec du texte. Je veux également que l'utilisateur visualise le fichier quand il est créé. J'utilise python unotools 0.3.3 LinuxMint 3.4.3 17,1 LibreOffice 4.2.8.2Erreur de connexion python3 unotools impossible de se connecter

La question:

unotools.errors.ConnectionError: failed to connect: ('socket,host=localhost,port=8100', {}) 

L'échantillon de unotools a bien fonctionné du terminal - créé et enregistré une sample.odt sans erreurs. Mon projet de code:

def writer_report(self): 
    subprocess.Popen(["soffice", "--accept='socket,host=localhost,port=8100;urp;StarOffice.Service'"]) 
    time.sleep(5) # using this to give time for LibreOffice to open - temporary 
    context = connect(Socket('localhost', '8100')) 
    writer = Writer(context) 
    writer.set_string_to_end('world\n') 
    writer.set_string_to_start('hello\n') 
    writer.store_to_url('output.odt','FilterName','writer8') 
    writer.close(True) 

L'application LibreOffice s'ouvre et reste ouverte. Cependant, la connexion semble être perdue.
J'espère que quelqu'un peut me donner de l'aide, merci.

Répondre

0

Je ne recommande pas de code comme ceci:

subprocess.Popen(...) 
time.sleep(...) 

Il est préférable d'utiliser un script shell pour démarrer soffice puis appeler le script python.

Toutefois, si vous êtes déterminé à exécuter soffice dans un sous-processus, je recommande d'augmenter le temps de veille à au moins 15 secondes.

Voir https://forum.openoffice.org/en/forum/viewtopic.php?t=1014.

+0

Merci pour le conseil. J'ai essayé de prolonger le temps mais toujours pas de joie. –

0

Merci pour le conseil. Je voulais que cette course soit un sous-processus. J'ai essayé de prolonger le temps mais toujours pas de joie.
Je cherche maintenant à utiliser le paquet Python odfpy 1.3.3 qui, après avoir commencé à utiliser pendant un jour ou deux, j'ai déjà plus de succès avec.