convertir un fichier au format pdf et l'envoyer au serveur

cancel
Showing results for 
Search instead for 
Did you mean: 
niko
Member II

convertir un fichier au format pdf et l'envoyer au serveur

Bonjour,

Je suis un nouvel utilisateur d'Alfresco, outil que ,  hier encore je ne connaissais pas. Je suis actuellement en stage à l'étranger, et l'on m'a demandé de réaliser un programme java permettant de convertir n'importe quel fichier au format pdf  utilisant alfresco.  Seulement, j'avoue que je ne sais vraiment pas par où commencer.  Je travaille sous windows xp, et  j'ai installé la version 3.3 community d'Alfresco. J'en ai plus ou mois compris le principe d'utilisation. J'ai également parcouru largement ce forum et rencontré un sujet portant sur la conversion de fichiers au format pdf, avec un code java présenté. Ma question va peut-être paraìtre stupide, mais ou faut-il utiliser ce code? Je ne comprends pas quelles sources je dois modifier.

Je suis vraiment perdu, de plus à l'étranger, avec des personnes qui ne me détaillent pas vraiment les étapes à effectuer.

Merci par avance de vos réponses.
9 Replies
hsohaib
Active Member

Re: convertir un fichier au format pdf et l'envoyer au serveur

J'ai également parcouru largement ce forum et rencontré un sujet portant sur la conversion de fichiers au format pdf, avec un code java présenté. Ma question va peut-être paraìtre stupide, mais ou faut-il utiliser ce code? Je ne comprends pas quelles sources je dois modifier.

fallait poster le lien du sujet en question, ainsi on pourra vous aider Smiley Happy
jeanjot
Active Member

Re: convertir un fichier au format pdf et l'envoyer au serveur

Bonsoir

Je ne sais pas quel type de fichier vous devez transformer en PDF sous Alfresco, mais par défaut dans Alfresco, il existe une règle qui affecté à un type mime ou tout type de fichier transforme n'importe quel document automatiquement en PDF (et en plus ou vous voulez dans votre arborescence alfresco si vous avez les bons droits d'écriture).
niko
Member II

Re: convertir un fichier au format pdf et l'envoyer au serveur

Merci de vos réponses.
L'objectif est maintenant plus clair, je dois réaliser un code java permettant d'envoyer un fichier passé depuis l'invite de commande sur le serveur Alfresco tout en le convertissant au format pdf. J'ai déja réalisé la première étape.
J'ai vu une discussion de ce type dans le forum, mais je ne sais pas trop comment l'utiliser :http://forums.alfresco.com/fr/viewtopic.php?f=11&t=1708
En effet la classe est OpenOfficeContentTransformer, mais dans mon cas je ne dois pas passer par OpenOffice.

Si quelqu'un peut m'éclaircir…

Merci!
niko
Member II

Re: convertir un fichier au format pdf et l'envoyer au serveur

Bonjour,

Je suis toujours sur mon problème de conversions de fichiers, je fais donc un petit up, et en profite pour demander quelques renseignements supplémentaires.  J'ai rencontré un morceau de code permettant de réaliser ce type de conversions sur la page suivante : http://wiki.alfresco.com/wiki/Content_Transformations . Je l'ai légerement modifié pour essayer de l'utiliser. Seulement je ne le comprends pas entièrement.


public class FichierToPdf {

    public static void main(String[] args) throws Exception {
       
       File document = new File("c:/AlfrescoLogo.jpg");
       ContentReader doc = new FileContentReader(document);
       
       File document2 = new File("c:/AlfrescoLogo.pdf");
       ContentWriter newDoc = new FileContentWriter(document2);

       transformInternal(doc, newDoc);
    }


    public static void transformInternal(
            ContentReader reader,
            ContentWriter writer) throws Exception
    {
        PDDocument pdf = null;
        InputStream is = null;
        try
        {
            is = reader.getContentInputStream();
            // stream the document in
            pdf = PDDocument.load(is);
            // strip the text out
            PDFTextStripper stripper = new PDFTextStripper();
            String text = stripper.getText(pdf);
           
            // dump it all to the writer
            writer.putContent(text);
        }
        finally
        {
            if (pdf != null)
            {
                try { pdf.close(); } catch (Throwable e) {e.printStackTrace(); }
            }
            if (is != null)
            {
                try { is.close(); } catch (Throwable e) {e.printStackTrace(); }
            }
        }
    }
}

Mon problème est qu'il n'accepte aucun fichier de type différent de pdf pour la variable contentReader. En revanche lorsque je teste une conversion pdf->.doc par exemple, cela crée bien le nouveau fichier, même si la conversion n'est pas parfaite.

Si quelqu'un peut m'éclaircir…

Merci d'avance!
niko
Member II

Re: convertir un fichier au format pdf et l'envoyer au serveur

Bonjour,

J'ai posté un message dans un autre sujet existant, et après avoir lu le post 'comment obtenir des réponses', je me suis aperçu qu'il n'était pas bon de reprendre le post d'une autre personne, bien que mon problème s'y approche réellement.  De  plus le post est marqué comme résolu, ce qui n'augmente pas mes chances de succès. Je vais donc essayer de vous détailler plus en détail mon problème.

Mon objectif est de permettre le  chargement de documents sur Alfresco et que ceux-ci soient  convertis au format pdf. Dans un premier temps, j'ai réalisé cela par l'intermédiaire d'une règle, mais cela ne correspondait pas réllements aux besoins des utilisateurs car il fallait créer la règle dans chaque dossier et de plus, la conversion d'images à pdf nécessitait l'ajout d'une autre règle. J'ai ensuite réalisé un script qui permettait la conversion de nimporte quel document (texte, images…) au format pdf au moment de le déposer dans Alfresco. Cette solution a ses limites également, car il faut toujours modifier le dossier de destination dans le script. On m'a donc demandé de réaliser un programme java pour cette opération. Je dispose déja d'un programme permettant l'ajout  de fichiers sur le serveur sans passer par l'interface web. J'ai également réaliser un programme java convertissant des documents au format pdf(En utilisant le JODConverter et OpenOffice en mode serveur). J'ai donc proposé cette solution à mon employeur: C'est-à-dire convertir le fichier au format pdf grâce au code utilisant OpenOffice en mode serveur, et l'envoyer ensuite sur le serveur d'Alfresco. Mais il m'a répondu qu'il préfererait que cela soit fait directement par l'intermédiaire d'Alfresco, car ma solution nécessite d'installer OpenOffice sur un autre serveur. J'avoue ne pas vraiment comprendre sa réflexion car Alfresco possède une version d'OpenOffice. Qu'en pensez-vous?

Si cette solution n'est pas valable, il me faut donc un moyen pour qu'Alfresco convertisse les fichiers au format pdf lorsque je les envoie sur le serveur. Cette discussion m'a parue intéressante : http://forums.alfresco.com/fr/viewtopic.php?f=11&t=1708 . Notamment le code d'huberd. C'est pourquoi j'ai laissé un post dans ce sujet, mais je n'ai pas obtenu de réponses. J'aurais aimé avoir plus d'informations sur le code en lui-même. J'ai compris ce que réalisaient toutes les fonctions grâce à la javadoc d'Alfresco. Mais des points noirs subsistent :
-Dans quelle classe se situe le code
-A quoi font référence les 'this'
-je n'ai pas rencontré la fonction register dans la javadoc

Je me permet de ré-afficher le code d'Huberd dans mon post pour plus de clareté :

    this.transformer = new OpenOfficeContentTransformer();
    this.transformer.setMimetypeService(mimetypeService);
    this.transformer.setConnection(openOfficeConnection);
    this.transformer.setDocumentFormatsConfiguration("classpath:alfresco/mimetype/openoffice-document-formats.xml");
    this.transformer.register();
                
    ContentReader reader = this.contentService.getReader(sessionNodeRef, ContentModel.PROP_CONTENT);  
    String contentMimeType = this.contentService.getWriter(sessionNodeRef, ContentModel.PROP_CONTENT, true).getMimetype().toString();
    reader.setMimetype(contentMimeType);

    File pdfTargetFile = TempFileProvider.createTempFile("TEST PDF" + "-target-", ".pdf");
    ContentWriter writer = new FileContentWriter(pdfTargetFile);
    writer.setMimetype(MimetypeMap.MIMETYPE_PDF);
             
    transformer.transform(reader, writer);

Merci d'avance de vos réponses.

Niko
jeanjot
Active Member

Re: convertir un fichier au format pdf et l'envoyer au serveur

J'avoue ne pas comprendre, car il me semble qu' à partir des règles appliquées sur un dossier avec un héritage pour tous les sous-dossier permet de faire cela directement sans se prendre la tête à faire du développement.

Il suffit (de mémoire) d'appliquer la règle de transformation sur tous les type MIME avec l'action : "transformer et copier un contenu" en donnant la bonne destination pour le fichier PDF.
niko
Member II

Re: convertir un fichier au format pdf et l'envoyer au serveur

Bonjour,

merci de votre réponse, je comprends votre réaction. Pour ma part également je suppose que l'aplication d'une règle serait suffisante. Seulement mes consignes sont de réaliser cette opération par l'intermédiaire d'un programme java.

Merci.

Niko
huberd
Member II

Re: convertir un fichier au format pdf et l'envoyer au serveur

En effet la classe est OpenOfficeContentTransformer, mais dans mon cas je ne dois pas passer par OpenOffice.

Si quelqu'un peut m'éclaircir…

Merci!

J'ai le regret de t'annoncer que cela n'est pas possible, ou alors avec beaucoup de travail inutile. A ce jour Alfresco est capable de "convertir" des documents Office en PDF en utilisant la fonction  OpenOfficeContentTransformer. Cette fonction n'est plus ni moins qu'une fonction d'API qui permet de se connecter à OpenOffice en mode serveur, de demander au serveur OpenOffice de lui convertir le document Office envoyé en PDF. Si tu veux t'affranchir de OpenOffice, il te faudra développer un module OpenOffice à ta convenance à partir des sources de OpenOffice, pour enlever tout ce qui ne te sera d'aucune utilité, comme l'interface graphique par exemple, et d'autres choses. Ce mode de fonctionnement risque de te demander beaucoup d'effort inutile, car OpenOffice existe déjà, et qu'Alfresco sait déjà l'utiliser. Pourquoi donc essayer de réinventer la roue alors qu'elle existe déjà ???
jeanjot
Active Member

Re: convertir un fichier au format pdf et l'envoyer au serveur

Pourquoi faire simple quand on peux faire compliquer ?  :roll:  :roll: