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 fichier PDF


Sujet :

API standards et tierces Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 26
    Points : 16
    Points
    16
    Par défaut Impression fichier PDF
    Bonjour,

    Je souhaite réaliser un bout de code qui imprime un fichier PDF sans que rien ne se produise à l'écran en dehors de du programme principal, même pas ouvrir acrobat reader.

    J'ai donc développé le bout de code suivant :

    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
     
    byte[] byteTab = getBytesFromFile(file);
    DocFlavor flavor = DocFlavor.SERVICE_FORMATTED.PAGEABLE;
     
    PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
    PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService();
     
    if ( defaultService != null )
    {
        if(defaultService.isDocFlavorSupported(flavor)){
    //Premiere solution
          PdfDecoder decodePDF = new PdfDecoder( true );
          decodePDF.openPdfArray( byteTab );
          decodePDF.setUsePDFPaperSize(true);
          Paper paper = new Paper();
          PageFormat pageFormat = new PageFormat();
          pageFormat.setPaper(paper);
          PrinterJob printJob = PrinterJob.getPrinterJob();
          printJob.setPrintable(decodePDF, pageFormat);
          printJob.print();
        }
    }
     
    //Deuxieme solution
    DocPrintJob job = defaultService.createPrintJob();
    flavor = DocFlavor.SERVICE_FORMATTED.PAGEABLE;
    PdfDecoder decodePDF = new PdfDecoder(true);
    decodePDF.openPdfArray( byteTab );
    decodePDF.setUsePDFPaperSize(true);
    DocAttributeSet das = new HashDocAttributeSet();
    Doc doc = new SimpleDoc(decodePDF, flavor, das);
    PrintRequestAttributeSet attrs = new HashPrintRequestAttributeSet();
    job.print(doc, attrs);
    Je n'arrive pas à obtenir un résultat satisfaisant.

    1ere solution, cela rajoute des marges lors de l'impression. Le fichier PDF d'origine est transformé.

    2eme solution, cela n'imprime que la première page dans le cas ou le fichier pdf est sur plusieurs pages. J'ai cherche une méthode pour modifier un paramètre d'impression de nombre de page, mais je n'ai rien trouvé.

    Merci pour vos conseils.

  2. #2
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Utilise JDIC et la méthode Desktop.print(File f);
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    Merci pour cette reponse.

    Apres des tests, cela me lance AcrobatReader pour imprimer le PDF, et à la fin de l'impression Acrobat est toujours ouvert.

    Je recherche une solution sans evenement ou du moins sans que l'utilisateur ait besoin de fermer inutilement une fentere (Comme acrobat dans ce cas).

    Auriez vous d'autres suggestions ? Ai-je mal mis en place cette solution ?

  4. #4
    Membre averti Avatar de Razgriz
    Profil pro
    Professeur / chercheur en informatique / mathématiques
    Inscrit en
    Avril 2006
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Professeur / chercheur en informatique / mathématiques

    Informations forums :
    Inscription : Avril 2006
    Messages : 391
    Points : 306
    Points
    306
    Par défaut
    J'ai une question, où tu trouves la classe PDFDecoder?
    Et la méthode getBytesFromFile elle fait partied de quelle classe et si c'est une classe à toi comment l'as-tu implémentée?

    Je demande ça car ton bout de code est très interessant et j'aimerais bien le comprendre en intégralité
    On a toujours besoin d'un plus bourrin que soi

    Oui il y a quelques bugs dans ma librairie de Sécurité, mais les classes postées ne sont pas celles de la dernière version, et j'ai la flemme de tout modifier. Je vous donnerai avec plaisir la dernière version du jar par mp.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    1. Pour PDFDecoder c'est dans JPedal

    http://www.jpedal.org/javadoc/org/jp...dfDecoder.html

    2. Pour getBytesFromFile, c'est effectivement une methode récupée qui transforme un fichier en tableau de bytes

    voici son implementation :

    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
     
        private byte[] getBytesFromFile(File file) throws IOException {
            InputStream is = new FileInputStream(file);
     
            // Get the size of the file
            long length = file.length();
     
            // You cannot create an array using a long type.
            // It needs to be an int type.
            // Before converting to an int type, check
            // to ensure that file is not larger than Integer.MAX_VALUE.
            if (length > Integer.MAX_VALUE) {
                // File is too large
            }
     
            // Create the byte array to hold the data
            byte[] bytes = new byte[(int)length];
     
            // Read in the bytes
            int offset = 0;
            int numRead = 0;
            while (offset < bytes.length
                    && (numRead=is.read(bytes, offset, bytes.length-offset)) >= 0) {
                offset += numRead;
            }
     
            // Ensure all the bytes have been read in
            if (offset < bytes.length) {
                throw new IOException("Could not completely read file "+file.getName());
            }
     
            // Close the input stream and return bytes
            is.close();
            return bytes;
        }
    Merci de me tenir informe si tu rencontres le probleme (et une solution par la meme occasion)

    Cordialement

    3j

Discussions similaires

  1. [XL-2003] Impression Fichier PDF
    Par Nikodemus dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/07/2011, 15h47
  2. [WD10] Etat choix ordre d'impression + fichier PDF
    Par mnssylvain dans le forum WinDev
    Réponses: 7
    Dernier message: 25/11/2009, 18h50
  3. Impression fichier PDF
    Par tebagtennis dans le forum IE
    Réponses: 2
    Dernier message: 17/06/2008, 08h47
  4. Impression Fichiers PDF
    Par fdraven dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 08/02/2008, 17h29
  5. [C#] Impression fichier PDF
    Par LaNat dans le forum Windows Forms
    Réponses: 4
    Dernier message: 27/10/2006, 09h18

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