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

Java Discussion :

redirection Imprimante ps->pdf


Sujet :

Java

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 29
    Points : 18
    Points
    18
    Par défaut redirection Imprimante ps->pdf
    Bonjour,
    Je suis à la recherche d'un petit renseignement, je vous explique mon petit problème.
    Alors j'ai programmé mon imprimante virtuel qui redirige l'impression(format ps) dans mon logiciel de type java.
    Donc je vais traiter des informations qu'il y a dedans avec une lecture de l'entrée standard (avant l'appel de fonction "convertPS2PDF"). Puis se que j'aimerais bien c'est que le code suivant génére mon pdf.

    Mon problème avec le code c'est qu'il me crée un pdf vide :s

    Donc je voudrais savoir si la méthode utilisé et la bonne, ou il y a un autre façon de faire.

    Merci d'avance
    Cordialement,

    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
    public class main {
    	public static void main(String[] args)
    	{
               convertPS2PDF("4pages.pdf");
            }
            private static void convertPS2PDF(String sName) {
    		try {
    			System.err.println("start");
    			Runtime.getRuntime().exec("\"C:/Program Files/gs/gs8.61/bin/gswin32c.exe\" @\"C:/Program Files/gs/gs8.61/bin/pdfprinter.rsp\" -sOutputFile=" + sName + " -c save pop -f -");
    			System.err.println("end");
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    }

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 084
    Points : 7 995
    Points
    7 995
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    command = "cmd /c cd .\\gs\\gs8.54\\lib\\ & gssetgs.bat & gswin32c -q -dNOPAUSE -dBATCH -g23832x45380 -sDEVICE=pdfwrite -sOutputFile=\""+newFile+"\" -c .setpdfwrite -f \""+psinputfile+"\" -dCompatibilityLevel=1.4&
    Je ne sais pas si cela pourrait t'etre d'une quelquoncque utilitée, mais je convertissais mes fichire PS en PDF avec cela (en A0+2plis (g23823x45380) à changer) grace a ghostscript.

    Il faut peut etre supprimer le gssetgs.bat selon que tes variable d'environement sont bien configurées ou non.

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    d'abord, préfère l'appel

    a qui tu passe les arguments déjà décomposés.

    Ensuite, n'oublie pas de lire ou fermer les sorties standard de ton logiciel, sous peine de le bloquer quand les buffers seront pleins.

  4. #4
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 29
    Points : 18
    Points
    18
    Par défaut
    recoucou,
    j'ai a un peu avancé sur le sujet mais je suis toujours bloqué au même endroit.
    J'ai récupéré donc se que l'imprimante nous envoie, on a écrit se contenu dans un fichier .ps.
    Mais là je recherche une commande qui me permet de créer le pdf via se fichier que j'ai crée.
    J'ai vu qu'il existait une commande ps2pdf mais est-t-elle valable en java?

    merci d'avance
    Cordialement

  5. #5
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Citation Envoyé par micou Voir le message
    J'ai vu qu'il existait une commande ps2pdf mais est-t-elle valable en java?
    Comment ça, "valable" ?
    Tu peux lancer toutes les commandes externes que tu souhaites.

  6. #6
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 29
    Points : 18
    Points
    18
    Par défaut
    bha, j'arrive pas a faire fonctionner ps2pdf dans mon code j'ai regardé le man ect ...
    Du coup je ne sais pas si c'est une librairie particulière.

    J'ai vu qu'il y avait un autre moyen aussi de faire la conversion avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    untime.getRuntime().exec(gs -dBATCH -dSAFER -DNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=out.pdf -c '.setpdfwrite <</AlwaysEmbed [/Helvetica /Times-Roman]>> setdistillerparams' -f in.ps);
    en lui envoyant les bons parametres dans ghostscript mais je n'y arrive pas

  7. #7
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    "je n'y arrive pas" ou "ça ne fonctionne pas" n'est pas suffisant.
    Donne les messages d'erreur !
    Commence par tester la ligne de commande directement dans une console pour voir si ça fonctionne.

  8. #8
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 29
    Points : 18
    Points
    18
    Par défaut
    Bon voila apres un bidouillage énorme ca marche !

    pour se qui ont besoin de ca voici se qu'il faut faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Runtime.getRuntime().exec("\"D:/Program Files/gs/gs8.64/bin/gswin32c.exe\"" + "@\"D:/Program Files/gs/gs8.64/pdfprinter.rsp\""+ "-q -dSAFER -dNOPAUSE -dBATCH -sOutputFile=file.pdf -sDEVICE=pdfwrite -c .setpdfwrite -f magi.ps");

  9. #9
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Citation Envoyé par micou Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Runtime.getRuntime().exec("\"D:/Program Files/gs/gs8.64/bin/gswin32c.exe\"" + "@\"D:/Program Files/gs/gs8.64/pdfprinter.rsp\""+ "-q -dSAFER -dNOPAUSE -dBATCH -sOutputFile=file.pdf -sDEVICE=pdfwrite -c .setpdfwrite -f magi.ps");
    Ce code va exécuter l'application
    "D:/Program
    avec les paramètres suivants:
    • Files/gs/gs8.64/bin/gswin32c.exe"
    • @"D:/Program
    • Files/gs/gs8.64/pdfprinter.rsp"
    • -q
    • -dSAFER
    • -dNOPAUSE
    • -dBATCH
    • -sOutputFile=file.pdf
    • -sDEVICE=pdfwrite
    • -c
    • .setpdfwrite
    • -f
    • magi.ps


    Ce qui n'est probablement pas ce que tu veux. Exec n'est pas une shell et ne va pas séparer tes arguments comme un shell, plus particulièrement, il ne prendra pas en compte le " pour protéger les espace.

    Préfère la méthode
    exec(String[]) elle est plus facile à gérer, plus facile à lire et ne se trompe pas sur les arguments.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Runtime.getRuntime().exec(new String[] {
        "D:/Program Files/gs/gs8.64/bin/gswin32c.exe",
        "D:/Program Files/gs/gs8.64/pdfprinter.rsp",
        "-q",
        "-dSAFER",
        "-dNOPAUSE",
        "-dBATCH",
        "-sOutputFile=file.pdf",
        "-sDEVICE=pdfwrite",
        "-c",
        ".setpdfwrite",
        "-f",
        "magi.ps"});

  10. #10
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 29
    Points : 18
    Points
    18
    Par défaut
    merci beaucoup tchize!
    j'ai mieux compris .

    bonne journée

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

Discussions similaires

  1. [WS 2008] Redirection Imprimante locale sur une session bureau à distance
    Par agrimault dans le forum Windows Serveur
    Réponses: 7
    Dernier message: 30/07/2014, 15h10
  2. Réponses: 1
    Dernier message: 31/12/2012, 08h51
  3. Modifier propriété imprimante pour impression PDF
    Par seb.49 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 28/01/2008, 20h27
  4. [W2k] Imprimante pdf libre via word
    Par ggnore dans le forum Word
    Réponses: 3
    Dernier message: 04/08/2005, 17h02
  5. Impression PDF et imprimante par défaut
    Par bobbafet dans le forum C++Builder
    Réponses: 2
    Dernier message: 03/11/2004, 21h33

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