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

Documents Java Discussion :

imprimer pdf depuis serveur


Sujet :

Documents Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 7
    Par défaut imprimer pdf depuis serveur
    bonjour à tous,
    Je voudrais savoir si avec java, et par exemple l'API iText, je pourrais provoquer l'impression d'un document pdf (hébergé sur un serveur) sur l'imprimante côté client sans passer par la fenêtre de dialogue d'impression.

    Je vous explique la situation. J'ai une boutique online faites avec OSCommerce. Pour chaque envoi je dois imprimer 2 fois la facture (une fois en bonne qualité pour le client, et la deuxième en basse qualité pour ma compta) et une étiquette de transport sur une imprimante à part. À partir de l'admin, càd un navigateur.
    Le problême c'est que je dois faire plein de clic pour sélectionner tous les paramètres (qualité d'impression, imprimante sélectionnée).

    Par php ou JS je ne peux pas envoyer les caractérsitiques de chaque impression. Je ne connais pas du tout Java, mais j'ai envie d'apprendre.
    Est-ce que quelqu'un pourrait me confirmer qu'avec Java je pourrais développer un programme qui ferait qu'en cliquant sur un bouton depuis l'admin les 3 impressions se lancent automatiquement selon les conditions que je veux?

    merci d'avance et bonne journée.

    ps: que se soit un pdf c'est pas obligatoire. Pour le moment j'imprime directement la page html.

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 74
    Billets dans le blog
    2
    Par défaut Silent Print
    Citation Envoyé par OSdave
    bonjour à tous,
    Je voudrais savoir si avec java, et par exemple l'API iText, je pourrais provoquer l'impression d'un document pdf (hébergé sur un serveur) sur l'imprimante côté client sans passer par la fenêtre de dialogue d'impression.
    Je ne suis pas sur si je comprends bien la question. S'il serait possible de provoquer l'impression de document côté client à partir d'un serveur, ceci serait un grand problème de sécurité. Imaginez-vous un script malicieux qui commence à imprimer des miliers de pages sur toutes les imprimantes connecté à un ordinateur qui est sur l'Internet ;-)

    Citation Envoyé par OSdave
    Je vous explique la situation. J'ai une boutique online faites avec OSCommerce. Pour chaque envoi je dois imprimer 2 fois la facture (une fois en bonne qualité pour le client, et la deuxième en basse qualité pour ma compta) et une étiquette de transport sur une imprimante à part.
    Alors vous êtes à côté du serveur. Ce n'est pas sur l'imprimante des clients que les document doivent être imprimé. Maintenant je comprends mieux. Si vous utilisez Adobe Reader du command line, il y a des paramètres non-documentés (qui peuvent disparaître si Adobe le veut):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    start acrord32.exe /p /h c:\test.pdf
    test.pdf est le fichier PDF; /p fait que le fichier est imprimé; /h supprime le 'dialog box'.

    Imprimer un ficher PDF sans Adobe Reader, utilisant du JAVA n'est pas facile. J'ai fait une liste de possibilités ici: http://itext.ugent.be/library/question.php?id=5

    Citation Envoyé par OSdave
    À partir de l'admin, càd un navigateur.
    Le problême c'est que je dois faire plein de clic pour sélectionner tous les paramètres (qualité d'impression, imprimante sélectionnée).
    Par php ou JS je ne peux pas envoyer les caractérsitiques de chaque impression.
    OK, je fais semblant de ne pas comprendre toute suite parce que ça me permet d'énumer de differente possibilités.
    On peut ajouter du JS à un ficher PDF qui fait que le PDF est imprimé dès que l'utilisateur ouvre le fichier dans Adobe Reader. Voyez l'example dans le tutoriel: http://itextdocs.lowagie.com/tutoria...p/#silentprint ou ouvrez ce fichier: http://itext.ugent.be/itext-in-actio...t_printing.pdf
    Le PDF silent_print.pdf est plus ou moins dangereux. Avec PDF 1.7 (Adobe Reader 8), on peut définir le nombre de copies qui doivent être imprimé. Alors on peut avoir la situation qu'un client ignorant ouvre le fichier et imprime des milliers de pages sur le 'default printer' sans le savoir...

    Citation Envoyé par OSdave
    Est-ce que quelqu'un pourrait me confirmer qu'avec Java je pourrais développer un programme qui ferait qu'en cliquant sur un bouton depuis l'admin les 3 impressions se lancent automatiquement selon les conditions que je veux?
    Les 3 impressions: non. Cela serait aussi difficile de choisir l'imprimante. Il faudra un peu plus de JS. Lisez ceci pour obtenir un peu d'inspiration: http://article.gmane.org/gmane.comp.....general/27277

    Bruno

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 7
    Par défaut merci
    waw, c'est pas de la petite réponse ça!
    J'ai pris bonne note de tous vos commentaires et votre dernier lien m'a en effet bien inspiré. Je découvre encore plus de possibilités à JavaScript.
    En partant de votre lien, passant par une rapide recherche sur GG, je suis tombé sur ça: je peux grâce à cet objet spécifier le nom de l'imprimante! J'espère qu'en creusant un peu plus je trouverai le moyen de jouer avec la qualité d'impression, et hop, l'affaire est dans le sac.

    Merci donc pour toute l'info

    un compatriote expatrié
    ps: ça va a Gand, c'est pas la tempête?

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 74
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par OSdave
    En partant de votre lien, passant par une rapide recherche sur GG, je suis tombé sur ça.
    Je ne connaissais pas cet article. Je l'ai ajouté à mon FAQ. Merci!
    Citation Envoyé par OSdave
    ça va a Gand, c'est pas la tempête?
    Je vais au travail à bicyclette, c'est chouette quand on a le vent dans le dos ;-)

  5. #5
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    Pour t'aiguiller j'ai aussi du faire un truc du meme style.

    Ce qu'on a fait est un peu lourg mais on devait imprimer des pdf d'un serveur sur une imprimante client.

    Au client sur le client, on lance un java webstart et en paralele coté serveur on construit le pdf qui est contitué d'une multitude de page, puis on le transfert sur le client en l'ayant d'abord transformé en PostScript.

    Puis le java web start détect que le fichier est arrivé sur le client et l'imprime sur l'imprimante par defaut. Sachant que ton fichier pdf est un ficheir postscript, le java web start ne fait alors qu'un print normal (plus facile pour l'impression, car certaine imprimante digere très très mal le pdf => elle s'emballe et sort n'importe quoi sur les feuilles et ne s'arrete plus....).


    Tout ca en un seul clic, sans boite de dialogue. Biensur le java web start fait appel à un jar qui lui est signé, donc il faut accepter la signature la premiere fois (1 à 2 clic en plus la premiere fois).

  6. #6
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 7
    Par défaut
    salut maxf1,
    merci pour ton indication.
    Comme je ne connais pas du tout Java, je vais d'abord essayer avec l'élément JS getPrintParams. Mais si ça ne suffit pas, j'approfondirais vers ta solucion.

    Et bien vu la signature, j'allais presque oublier (même si c'est pas encore fait, là je crois que je suis sur la bonne piste).
    salut

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2004
    Messages : 11
    Par défaut
    Je suis aussi à la recherche d'une solution me permettant d'utiliser l'imprimante du client à partir d'une page web.

    Etant donné que mon appli doit tourner en Intranet, j'ai solutionné le problème en utilisant CUPS et les imprimantes en réseaux de la société.

    Etant donné que CUPS nécéssite un fichier PostScript pour imprimer et la meilleure solution que j'ai trouvé c'est généré un fichier LaTeX avec php, et ensuite envoyer des commandes pour convertir le fichier en PostScript (impression) ou en PDF(téléchargement).

    Un autre élément est venu tout casser si je puis dire ... je dois aussi pouvoir faire imprimer les clients hors intranet... plus dur du coups !!

    Des lors ma réflexion est la suivante : les fichiers PostScript sont aux imprimantes ce qu'est l'assembleur aux processeurs ... donc ca doit surement etre possible de traiter un fichier PostScript avec Java et de commander l'impression avec un Applet.

    Je n'ai pas encore eu l'occasion de mettre ca en place (je n'ai pas non plus le niveau nécéssaire en Java) mais j'ai cherché un peu de doc.

    Au détour de mes recherches je suis tombé sur une documentation de chez SUN traitant de l'impression : http://java.sun.com/printing/whitepaper.html

    Ca me semble très intéressant... à approfondir !

    Une amélioration serait de compresser le fichier PostScript en zip, en gz ou en bz2 histoire de diminuer la taille des fichiers.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2004
    Messages : 11
    Par défaut
    Nouvel élément de réflexion :

    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
    <html>
    <head>
    <script>
    	function doit() {
    		var x = document.getElementById("doodad");
    		//x.click();
    		//x.setActive();
    		//x.focus();
    		x.print();
    	}
    </script>
    </head>
     
    <body>
    <div>
    <EMBED id="doodad" src="test.pdf" width="450" height="50"></EMBED>
    </div>
    <button onclick="doit()">Print</button>
    </body>
    </html>

  9. #9
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 7
    Par défaut
    salut guslinux,
    selon le code de ton "nouvel élément de réflexion", ça ouvre la fenêtre de dialogue d'impression, non?
    Pendant ce temps, je m'en vais étudier ton lien sur l'impression en Java

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/12/2012, 10h22
  2. [WD17] Imprimer un pdf depuis acrobat
    Par gancau dans le forum WinDev
    Réponses: 4
    Dernier message: 07/08/2012, 08h14
  3. Upload fichier pdf sur serveur depuis un serveur
    Par Clem6868 dans le forum Java EE
    Réponses: 7
    Dernier message: 24/08/2011, 10h21
  4. imprimer docs PDF depuis unix
    Par midotoon dans le forum AIX
    Réponses: 1
    Dernier message: 19/04/2010, 13h26
  5. Imprimer un PDF côté serveur
    Par utilisateur_java dans le forum C#
    Réponses: 12
    Dernier message: 30/08/2007, 14h29

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