begin process at 2012 02 10 08:38:58
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Divers

 > 

Aide et documentation

 > 

Génération de documents PDF avec Delphi et OpenOffice


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Génération de documents PDF avec Delphi et OpenOffice

jeudi 5 avril 2007 à 17:35:03 | Génération de documents PDF avec Delphi et OpenOffice

acarre

Bonjour,
Je développe actuellement une application permettant la conversion de documents au format .doc vers le format .pdf. Pour se faire, j'utilise l'API OpenOffice :
   - J'ouvre une instance d'openoffice en utilisant la fonction CreateOLEObject
   - Je crée une instance du document doc en cours à l'aide la méthode loadComponentFromUrl
   - J'enregistre le document au format pdf en utilisant la méthode storeToUrl
   - Je ferme le document.
   - Le fichier PDF est créé.
Mais mon problème est que lors du passage sur le storetoURL, OpenOffice semble allouer de l'espace mémoire (observé dans le gestionnaire des tâches de windows : un peu moins d'1 Mo par fichier) mais ne le libère jamais. Je dois traiter près de 5000 fichiers ce qui semble être beaucoup pour mon OS (Le bug est reproduit sur n'importe quel OS à savoir Windows 2000(512 Mo de RAM), 2003 (1Go de RAM) ou XP (1Go de RAM))

J'ai tenté d'ajouter "openoffice.dispose" pour fermer la session d'openoffice entre chaque fichier mais il n'arrive pas à le rouvrir. Dans ce cas j'ai un message d'erreur () sur le 
   openoffice := CreateOleObject('com.sun.star.ServiceManager');

Pour information, je travaille sous Delphi 2005 et OpenOffice 2.2.0.

Je vous remercie par avance pour la réponse.

Voici le bout de code :


try
   try
      result := false;
     if dstFile <> '' then
     begin
       ConnectOpenOffice;
       //Conversion du chemin du fichier vers un format reconnu de openoffice
       monFich:= convertToURL(srcFile);
       PropFich:= dummyArray;
       //Ouverture de openoffice en mode caché
       //ATTENTION : en OOo 2.0.2 ça plante donc utiliser OOo 2.0.3
       PropFich := CreateProperties(['Hidden', True]); // ici les noms de propriétés sont sensibles à la casse
       try
          //Chargement du document
          monDocument:= StarDesktop.LoadComponentFromURL(monFich, '_blank', 0, PropFich);
       except
      exit;
    end;
    PropFich:= dummyArray;
    PropFich:= CreateProperties(['FilterName', 'writer_pdf_Export']); // ici les noms de propriétés sont sensibles à la casse
    adresseDOC := convertToURL(dstFile);
    monDocument.storeToURL(adresseDOC,PropFich);
    monDocument.Close(True);
  end;
 
  result := true;
   except
  on e:Exception do
    LogErreur(e,'ConvertToPDF.execute');
   end;
 finally
  if not isnullEmpty(OPenOffice) then
  begin  
   stardesktop.terminate;
   stardesktop.unassigned;
   //openoffice.dispose
   openoffice.unassigned;
  end;
 end;


mardi 10 avril 2007 à 10:19:11 | Re : Génération de documents PDF avec Delphi et OpenOffice

acarre

Réponse acceptée !
Bonjour,
Pour ceux que ça intéresse, pour contourner mon problème j'effectue un dispose d'OpenOffice entre chaque document et je désactive le démarrage automatique d'OpenOffice. De ce fait, les ressources assignée à OpenOffice sont automatiquement libérées. Le traitement en est rendu un peu plus long mais ainsi j'ai une meilleur maîtrise de la mémoire.
Après avoir posté sur le forum anglophone d'OpenOffice, j'ai découvert qu'OpenOffice n'est pas encore optimisé dans la gestion de la mémoire.

Bonne journée


Cette discussion est classée dans : end, format, pdf, openoffice, propfich


Répondre à ce message

Sujets en rapport avec ce message

SQL... erreur [ par cmeme ] Merci encore pour ton aide: je vais commenter le probleme. En réalité, j'ai plusieurs bouton: Ajouter, Sélectionner, Modifier, Supprimer. Ce que SavetoFile ne fonctionne pas avec D2005 , [ par MarcelF ] Bonjour,J'ai un pb avec D2005, je voudrais sauver le contenu du clipboard dans un fichier. Ceci fonctionnait sans pb avec Office 2003.Avec Office 2007 [BAR]Oui au format PDF pour les tutoriels Codes-Sources [ par f0xi ] [url=http://deefaze.ovh.org/sondage.html]Aller à la pétition[/url] Cher ami de codes-sources, vous savez sûrement qu'actuellement l'ajout d'un tutori format décimal (FloatFormat, Precision, Digits) ? masque (##,#0.000E+#) [ par zwyx ] [size=50][color=white]FloatFormat,Precision,Digits,Masque[/color][/size] Bonjour à tous, Je bloque dans l'écriture d'une bête routine. Savoir qu'on a pdf [ par spacemiomio ] salut a toutes et a tousj'ai un petite question a poser :SERAIT IL POSSIBLE DE CONVERTIR UN FIHIER PDF NATIF ( a l'interieur du fichier lui meme) EN T recherche erreur pour creation pdf [ par pratrick ] Messieurs bonjour J'ai tenté de mettre ce code mais sans succés [code=pas]unit Unit11; interface uses Windows, Messages, SysUtils, Variants, Class Probleme de requete UPDATE pour modifier de champs dans ma dbgrid [ par cmeme ] Salut merciii à l'avance pour votre aide ;) Voila mon code mais la requete ne fais rien , elle change rien dans ma DBgrid < Une érreur ? [ par flo160fr ] Bonjour, Je suis en trains de déveloper un petit programme, et j'obtien cette érreur lors de son éxécution (seulement quand je lui envoi ce paramètre Tableau dynamique, portee des variables [ par jderf ] Dans une unite j'avais une procedure avec un tableau dynamique en paramêtre (passage du pointeur du tableau sans le out, puisque les tab dyna sont des Recuperer le text de AcroPDF dans un memo [ par bazbazus ] bonjour a tous [^^yeuxenlair] salut a tous j'ai installer activex AcroPDF pour lire les fichiers PDF sur delphi ma question et est ce que je peut Recu


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,622 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales