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 :

impression PDF sans intervention de l'utilisateur


Sujet :

API standards et tierces Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 48
    Points : 28
    Points
    28
    Par défaut impression PDF sans intervention de l'utilisateur
    Bonjour,

    Je souhaite imprimer automatiquement un document PDF en spécifiant le tiroir de l'imprimante à utiliser.

    J'étais au départ parti sur l'idée de convertir le PDF en PS et d'envoyer le PS à l'imprimante via la commande LPR, mais je suis bloqué pour spécifier le bac à utiliser (ou même si j'installe plusieurs fois la même imprimante avec un bac par défaut différent...)

    Je n'ai rien trouvé pour l'instant en Java (en .net oui mais librairie à 800$ ...)

    Une idée?

    Merci pour votre aide

  2. #2
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Points : 730
    Points
    730
    Par défaut
    Salut,

    Je comprends pas trop ton idée de tiroir... mais est-ce qu'un imprimante virtuel pdf exemple : Cute PDF Writer??? ne ferai pas l'affaire.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 48
    Points : 28
    Points
    28
    Par défaut
    Non, il ne s'agit pas de créer un PDF, mais d'imprimer un PDF existant par programme.

    Après qq recherches je suis tombé sur jPDFPrint. Cette librairie est payante mais moins chère que les autres que j'ai pu trouver (300 $). Je ne l'ai pas encore testée...

  4. #4
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Par expérience la détection automatique des bacs c'est la m****.
    Pourquoi ? Parce qu'il n'y a aucunes normes entre les différents constructeurs pour le nommage et l'identification de ces bacs.
    Le bac1 sera nommé "bac1" sur un type d'imprimante, nommé "bac" sur une autre, "A4" sur une autre encore, etc...
    C'est un peu pour ça qu'on ne trouve pas grand chose pour la gestion des bacs en java.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 48
    Points : 28
    Points
    28
    Par défaut
    J'ai testé jPdfPrint et celà fonctionne assez bien.

    La solution que j'ai trouvée pour les bacs est la suivante:

    Si une imprimante a 3 bacs, on l'installe trois fois et on lui donne trois noms différents. Chaque imprimante installée a un bac par défaut différent (à configurer dans windows).

    Exemple:
    - HP4250-B01 : pointe vers une imprimante hp, le bac par défaut est le 1
    - HP4250-B02 : " " " 2
    - HP4250-B03 : " " " 3

    Celà est assez fastidieux à mettre en place, mais ça fonctionne!

    Le code pour lancer une impression avec jPDFPrint (300$ par CPU) est assez simple, j'ai créé cette petite classe pour faciliter son utilisation:

    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
    55
    56
    57
    58
    59
    60
     
    /*
     * Créé le 06-févr.-2007
     *
     * JFD 
     */
    package pdfPrinter;
     
    import java.awt.print.PrinterJob; 
    import javax.print.PrintService;
    import javax.print.PrintServiceLookup; 
    import javax.print.attribute.HashPrintRequestAttributeSet; 
    import javax.print.attribute.standard.Chromaticity; 
    import com.qoppa.pdfPrint.PDFPrint; 
     
    /**
     * @author JFD
     * 
     */
    public class Printer 
    {
    	 public static void main(String[] args) 
    	 {
    	 	try
    		{
    	 		if(args.length != 2)
    	 			throw new Exception("Arguments attendus: 1:Fichier 2:Imprimante. Ex: pdfPrinter.Printer c:\\test.pdf 10.161.112.212-B01");
    	 		String fileName = args[0];
    	 		String printerName = args[1];
     
    	 		print(fileName, printerName);
    		}
    	 	catch(Exception e)
    		{
    	 		System.out.println("Erreur : "+e.getMessage());
    		}
    	 }
     
    	 public static void print(String fileName, String printerName) throws Exception
    	 {
    	 	PDFPrint pdfPrint = new PDFPrint (fileName, null);
     		PrinterJob pJob = PrinterJob.getPrinterJob();
     		pJob.setPrintable (pdfPrint);	 		
     		HashPrintRequestAttributeSet printAttrSet = new HashPrintRequestAttributeSet (Chromaticity.MONOCHROME);
     
     		pJob.setPrintService(getPrintService(printerName));
     		pJob.print(printAttrSet);
    	 }
     
    	 private static PrintService getPrintService(String printerName) throws Exception
    	 {
    	 	PrintService[] pServices = PrintServiceLookup.lookupPrintServices(null, null);
    	 	for(int i=0;i<pServices.length;i++)
    	 	{
    	 		if(pServices[i].getName().equals(printerName))
    	 			return pServices[i];
    	 	}
    	 	throw new Exception("Imprimante "+printerName+" non trouvée!");
    	 }
    }

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 113
    Points : 42
    Points
    42
    Par défaut
    Bonjour,
    J'ai le même probleme, je vaudrais imprimer des documents PDF que je genere dans mon programme sans intervention de l'utilisateur. cad je dois specifier meme l'imprimante.
    y a pas des commandes pr fairr ca directement dans mon programme java

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 03/10/2012, 14h44
  2. Convertir un .xls en .pdf sans intervention
    Par orke22 dans le forum VBScript
    Réponses: 12
    Dernier message: 24/12/2009, 13h43
  3. Remplir automatiquement un formulaire sans intervention de l'utilisateur
    Par marco62118 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 27/07/2009, 19h25
  4. Upload d'image sans intervention de l'utilisateur
    Par Pierre$ dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 22/12/2008, 11h05
  5. Impression PDF sans soft
    Par gnoc dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 31/05/2005, 15h33

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