IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API standards et tierces Java Discussion :

Transformer un PDF A1 en PDF


Sujet :

API standards et tierces Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 155
    Par défaut Transformer un PDF A1 en PDF
    Bonjour,

    Je voudrais convertir un PDF A1 iso en PDF. Pour cela j'ai voulu récupérer le PDF A le convertir en PostScript puis le reconvertir en PDF. En utilisant GSView et GhostScript cela fonctionne parfaitement.
    En faisant quelques recherches j'ai trouvé une API qui pourrait me permettre de faire cela :
    Ghost4J voici le lien de téléchargement http://ghost4j.sourceforge.net/
    Voilà mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    import java.io.FileOutputStream;
    import java.text.ParseException;
     
    import net.sf.ghost4j.converter.PDFConverter;
    import net.sf.ghost4j.converter.PSConverter;
    import net.sf.ghost4j.document.*;
    import java.io.File;
    import org.apache.commons.io.IOUtils;
     
     
    public class Main {
     
    	/**
             * @param args
             * @throws ParseException 
             */
    	public static void main(String[] args) throws ParseException {
    		// TODO Auto-generated method stub
    		FileOutputStream fos = null;
    		try {
    			//--------------------------------Transformation en PS
    			//load PDF document
                            PDFDocument document = new PDFDocument();
                            document.load(new File("..\\..test.pdf"));
                            fos = new FileOutputStream(new File("..\\..testPs.ps"));
     
                           //create PS converter
                           PSConverter psConv = new PSConverter();
                           System.out.println("debut de la conversion en ps..........");
                           psConv.convert(document, fos);
                           System.out.println("fin de la conversion en ps..........");
     
     
                           //--------------------------------Transformation en PDF
                           // load PostScript document
                           PSDocument docPs = new PSDocument();
                           docPs.load(new File("..\\..testPs.ps"));
                           fos = new FileOutputStream(new File("..\\..final.pdf"));
     
                           //create PDF converter
                           PDFConverter converter = new PDFConverter();
                           converter.setPDFSettings
                                 (PDFConverter.OPTION_PDFSETTINGS_PREPRESS);
                           converter.convert(docPs, fos);
     
    		} catch (Exception e) {
                            System.err.println("ERROR: " + e.getMessage());
                            e.printStackTrace();
                    } finally{
            	        IOUtils.closeQuietly(fos);
                    }
    	}
    }
    Et voilà l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    debut de la conversion en ps..........
    ERROR: Temporary file C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ghost4j\java.io.FileOutputStream@14045361320752556281933 cannot be deleted
    java.io.IOException: Temporary file C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ghost4j\java.io.FileOutputStream@14045361320752556281933 cannot be deleted
    	at net.sf.ghost4j.util.DiskStore.removeFile(DiskStore.java:106)
    	at net.sf.ghost4j.converter.PSConverter.run(PSConverter.java:126)
    	at net.sf.ghost4j.converter.AbstractRemoteConverter.convert(AbstractRemoteConverter.java:76)
    	at Main.main(Main.java:30)
    Il y a peut être un moyen plus simple pour faire la conversion ?
    Sinon si quelqu'un a déjà utilisé cette API et qu'il peut m'orienter pour résoudre ce problème.

    Merci par avance !

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 096
    Par défaut
    Cela ne vas pas résoudre ton problème, mais :

    Quelle est la différence en un "PDF A1 iso" et un "PDF" ?
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 155
    Par défaut
    Alors je ne suis pas un expert mais de ce que j'ai compris le PDF A1 est un PDF définit par la norme ISO 19005 qui garantit la lisibilité. Ce PDF d'après ce que j'ai pu lire est fidèle au document original si il est issu d'un word, excel...
    Mes sources : http://fr.wikipedia.org/wiki/PDF/A-1

    Pour moi le problème est que je dois livrer ce PDF A1 et que le destinataire ne peut pas en générer une image tif. Je dois donc le remettre en PDF non A1 avant de la transmettre.
    J'espère avoir été clair.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 155
    Par défaut
    C'est trouvé !!!!!
    Après quelques recherches, je sais que l'erreur provient de la dll gs32dll.dll qui n'était pas trouvée.
    Je l'ai donc copier dans C:\WINDOWS\System32 et ça fonctionne j'ai par contre modifier mon code pour aller un peu plus vite.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
     
     public static void main(String[] args)
    	    {
    	        //get Ghostscript instance
    	        Ghostscript gs = Ghostscript.getInstance();
     
    	        //prepare Ghostscript interpreter parameters
    	        String[] gsArgs = new String[10];
    	        String[] gsArgs1 = new String[11];
     
    	        //Crée le postscript a partir du pdf A1 
    	        gsArgs[0] = "-pdf2ps";
    	        gsArgs[1] = "-dNOPAUSE";
    	        gsArgs[2] = "-dBATCH";
    	        gsArgs[3] = "-dSAFER";
    	        gsArgs[4] = "-sDEVICE=pdfwrite";
    	        gsArgs[5] = "-sOutputFile=chemin du ps créé";
    	        gsArgs[6] = "-c";
    	        gsArgs[7] = ".setpdfwrite";
    	        gsArgs[8] = "-f";
    	        gsArgs[9] = "chemin du PDF A1";
     
    	        //crée le PDF a partir du postscript généré avant
    	        gsArgs1[0] = "-ps2pdf14";
    	        gsArgs1[1] = "-dNOPAUSE";
    	        gsArgs1[2] = "-dBATCH";
    	        gsArgs1[3] = "-dSAFER";
    	        gsArgs1[4] = "-sDEVICE=pdfwrite";
    	        gsArgs1[5] = "-q";
    	        gsArgs1[6] = "-sOutputFile=chemin du fichier pdf final";
    	        gsArgs1[7] = "-c";
    	        gsArgs1[8] = ".setpdfwrite";
    	        gsArgs1[9] = "-f";
    	        gsArgs1[10] = "chemin du fichier ps";
     
    	        //execute and exit interpreter
    	        try 
    	        {
    	            gs.initialize(gsArgs);
    	            gs.exit();
    	            gs.initialize(gsArgs1);
    	            gs.exit();
    	        } catch (GhostscriptException e) 
    	        {
    	            System.out.println("ERROR: " + e.getMessage());
    	        }
    	    }
    J'ai juste le WARNING suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    log4j:WARN No appenders could be found for logger (net.sf.ghost4j.Ghostscript).
    log4j:WARN Please initialize the log4j system properly.
    Je devrais pouvoir le résoudre en créant un fichier properties mais faut que je regarde en détail...

    Si quelqu'un sait comment résoudre ce Warning je suis preneur sinon je reviens vers vous dès que j'en sais mieux...

    A+

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 155
    Par défaut
    Voilà un lien pour le WARNING, pour ceux qui sont intéressés...

    http://gfx.developpez.com/tutoriel/java/log4j/

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Transformer un fichier Word ou Pdf en Base 64
    Par abbd dans le forum ASP.NET
    Réponses: 1
    Dernier message: 10/02/2009, 14h55
  2. [phpToPDF] Transformer un fichier php en pdf
    Par coco38 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 11/04/2007, 13h49
  3. Transformation involontaire de pièce jointe .pdf en .bin
    Par popopol91 dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 30/01/2007, 10h56
  4. [VBA-Excel]transformer un fichier word en .pdf
    Par Junness dans le forum VBA Word
    Réponses: 9
    Dernier message: 21/07/2006, 13h15
  5. transformer un fichire Xml en pdf
    Par SuperFoustan dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 21/02/2003, 11h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo