Bonjour,

Voila je rencontre un petit problème avec mon code.

Je suis en stage et conçois actuellement une base de données en HTML et CSS (je me suis tout récement mis au PHP avec Wamp, j'utilise également le javascript pour des fonctions prédéfinis).

Je vais clarifier mon problème:

  • Ma base de données est sous forme de site hébergé en locale
  • Je présente les fichiers PDF comme ceci

  • Je souhaite que mon bouton "print" n'ouvre pas le PDF avec lequel il est lié (consultable en popup onglet par clique sur l'image) mais simplement l'imprimer

Remarque: J'ai réussi à faire, avec la fonction "onload", qu'à la fin du chargement de mon onglet la fenêtre d'impression du PDF s'ouvre automatiquement mais ce n'est toujours pas ce que je veux.

Je sais qu'il existe une technique pour imprimer une page avec la fonction "window.print" (voir ci-dessous).

<td><a onclick="window.open('Base de données PDF/UNILED/UNILED 45C +/fiche_commerciale.pdf')"><img src="Images/logopdf.png" title="Plaquette Gamme UNILED+" width="25"></a></br>
<form>
    <input type="button" id="button-imprimer" value="Imprimer" onclick="window.print()" src="Base de données PDF/UNILED/UNILED 45C +/fiche_commerciale.pdf"/>
</form></td>

Je veux que ma fenetre d'impression s'ouvre avec mon fichier PDF (apercu du PDF) non l'impression de la page sur laquel le bouton "imprimer" se trouve.

Mon souhait final est:

  • soit de faire que ce bouton remplisse sa fonction décrite au dessus
  • soit que mon image, donc mon "lien" puisse être sélectionnée par: clique droit+impression comme un PDF que l'on stock dans son PC

J'ai déja fait un post sur Openclassroom (ancien site du zéro) mais mon post n'est pas très actif donc j'éspère avoir plus de chance ici...
Je vous met le lien pour consulter mon problèe sous tout les angles:

15 réponses


Bonjour,
après une recherche google : "open pdf in browser print dialog"

il est apparement possible de faire ce que tu demande, mais pas dans ton script navigateur. C'est dans la génération du pdf que cela ce fait (c'est le pdf qui est porteur de l'order d'ouverture dans la boite de dialogue d'impression)

Nathan T
Auteur

Merci nico41,

Malheuresement, j'ai aussi vu dans mes recherches et tests qu'il n'est pas possible de faire ce que je veux donc je pensais modifié mon problème...

Je m'explique ! ^^
J'ai réussi à ouvrir mon PDF et lancer son impression automatiquement dans un popup onglet grace à la fonction "ONLOAD". Cependant cela oblige à l'utilisateur de refermer l'onglet... J'aimerais donc savoir si il me serais possible de faire en sorte que l'onglet se referme avec le "ONCLICK" sur le bouton imprimer du paramétrage d'impression. En bref, cela ne ferais plus que deux clic' pour l'utilisateur : 1 sur mon bouton "Print" puis un second sur le bouton "Imprimer" de l'interface du paramétrage d'impression.

Salut salut,

J'ai voulu faire pareil un jour mais j'ai laisser tombé par manque de temps (même si sa prend pas spécialement énormément de temps).
J'avais dans mes favoris ce lien sur lequel tu est peut être déjà tombé, mais je te le laisse quand même au cas ou.

http://forum.pcsoft.fr/fr-FR/pcsoft.fr.windev/79867-wd11-imprimer-fichier-pdf-existant-85945/read.awp?AWPID61EA0311=635548327D9A78265DF9BC270C552FC4A78F6EDC

Voilà en espérant que sa fasse l'affaire, bon courage...

Nathan T
Auteur

Merci Rachid Vse,

Malheuresement, le code que tu me propose sert à ouvrir une fenêtre d'impression et celle du parametrage d'inmprimante.. :'(
Cette fonction peut être simplifié en utilisant la fonction "window.print()" pour, par exemple, imprimer une pag web sur laquelle on se trouve.

Exemple:

<form>
            <input type="button" id="button-imprimer" value="Imprimer" onclick="window.print('Base de données PDF/UNILED/UNILED 45C +/fiche_commerciale.pdf')" src="Base de données PDF/UNILED/UNILED 45C +/fiche_commerciale.pdf"/
</form>

Ici, on voit que je veux imprimer un fichier .PDF situé avec un chemin d'accès dans plusieurs sous-dossiers cependant ca n'accède pas au fichier et ouvre la fenetre d'impression pour la page ou ce trouve mon bouton.

Aucun soucis et bien le seul truc que j'ai en vue qui pourrai te convenir c'est :
http://forum.alsacreations.com/topic-1-48412-1-Telecharger-un-fichier-pdf-sur-un-site-sans-louvrir-directement-.html
regarde un peu la méthode dont ils parlent.

Mais le mieux est encore de regarder ici :
http://www.webtolosa.com/2010/02/04/forcer-le-telechargement-des-liens-pdf/ et t'approprié le truc histoire de l'adapter à ta sauce.

Et désolé je vien de tilter que le lien de mon message précédent était plus pour imprimer sois même plusieurs pdf sans les ouvrir.

Nathan T
Auteur

HEY !
Mes tuteurs acceptent l'ouverture du pdf si la fenetre d'impression pop directement mais nouveau probleme j'ai trouver un code qui fonctionne :D
Les fichier sont téléchargeable en bas de page ici

Plus qu'une question...^^
Comment je met tout ca dans mon bouton print ??

(je comprend pas trop le code là... meme si je me suis mis au php)

Merci encore de votre aide

Bonjour.

Comment je met tout ca dans mon bouton print ??

Tu ne le met pas sur ton bouton print, il te faut utiliser le système en PHP.
Ce script permet juste que l'orsque le PDF est affiché dans le navigateur, d'ouvrir la boite de dialogue pour imprimer, mais ça n'en empèche pas l'affichage du fichier.

Cette extension permet d'incorporer du JavaScript dans le PDF. Le code est exécuté à l'ouverture du document.

Pour faire simple, tu fais un lien normal vers une autre page de ton site qui affichera le fichier PDF et le script proposé ouvrira automatiquement la boite de dialogue pour l'impression à l'affichage de celui-ci.
C'est prévu pour fonctionner avec la génération de fichier PDF avec la librairie FPDF.

Nathan T
Auteur

Merci bien,

Je test tout ça est retourne vers vous ;-)

Que dois-je mettre après mon ONCLICK de mon bouton <input type="button" . . . onclick ="???" />
Je dois crée une page avec la balise <object/> pour afficher le pdf ou juste window.open('chemin du pdf') suffit ?

Si vous pouviez me faire un exemple avec un <input/> (je suis pas un pro du codage, j'ai commencé pour mon stage et cela ne fait que 1 semaine... ^^ )

Edit--

Donc si j'ai bien compris mon bouton input ne sert qu'à ouvrir une page .php (système de lien basique) où se trouve mon html d'affichage de pdf (balisage <object/>) puis j'incorpore les scripts que j'ai trouvé pour que tout se fasse de façon automatique...

C'est bien ça ?

Vraiment merci pour toute l'aide que tu m'apporte et désolé d'être un peu un boulet mais je fait que débuter donc c'est pas évident :-$

Nathan T
Auteur

J'ai vu avec mes tuteurs et il m'ont conseillé peu être quelque chose de plus simple enfin pour moi...
Le Php sera minim et ce serais plus du HTML et CSS par la suite

Voila le topo ! ^^
Je n'ai plus à m'occuper de l'impression, je dois ouvrir la fenetre de l'explorateur windows directement dans le bon dossier pour qu'ils puissent "clic droit+imprimer" leur pdf

J'ai vu que pour faire un bouton parcourir on utilise la fonction:

<input type="file" name="fichier" />

Cette fonction est en partie idéale car elle ouvre un explorateur windows où ils n'ont plus qu'à faire une "clicdroit+imprimer" cependant il faut que cette fenêtre s'ouvre directement dans un certain fichier comme avec une source

src="Base/UNILED/UNILED45/fkjzbfkb.pdf"

J'ai réussi ce matin mais je n'y arrive plus... J'ai du renommer les fichier car il y avait des accents et espaces et maintenant mon programme affiche un chemin par defaut dans mes fichiers d'explorateur (chrome) par defaut

Je vais refaire tous les chemins mais si vous avez une piste :D

Donc, maintenant tu ne fais plus imprimer le fichier pdf depuis le site, mais tu veux que l'utilisateur le télécharge sur son ordinateur pour l'imprimer par la suite ?
Sauf que tu t'y prend mal, un input de type file, c'est pour uploader un fichier sur ton serveur, c'est à dire pour que l'utilisateur envoi un fichier de son ordinateur vers ton serveur.

Nathan T
Auteur

Je vais t'expliquer entièrement le truc sinon on va pas se comprendre ^^

  • L'entreprise possède ou peut posseder tous les fichiers pdf et les stocker sur un serveur. (pdf descriptifs de produits quelconques)
  • Mon projet, c'est de monter un petit site pour qu'il puisse aller plus vite leur de l'impression de mémoires techniques (un gros dossier avec les doc techniques et certification NF et CE de chaque produit) donc j'ai choisi de prog une interface en HTML et CSS car je connaissais un peu.

Je voulais faire un pdf qui s'ouvre en popup avec une fenetre d'impression mais 1 clic pour ouvrir le popup + 1 pour imprimer (si seulement j'avais réussi avec le code que j'avais trouvé donc 2 dans mon cas) + 1 pour fermer l'onglet .... enfin bref trop long ^^

On a discuter avec mes tuteurs et ils m'ont demandé si je pouvais ouvrir une fenetre explorateur windows où ils n'auraient qu'à fair "clic droit+ imprimer"
Réaliser une arborescence avec les produits et doc pdf sa je sais faire mais mon problème c'est : ouvrir l'explorateur à l'endroit où se situe les pdf en question et bloquer un chemin pour chaque produit

exemple:

bloc de secours
Legrand/uniled/uniled45C dans ce dossier final se trouverais mon pdf "fiche technique"

Voila voila :-)
Si tu me trouve pas clair demande car dans ma tête c'est bon mais a ce qu'il parait j'ai du mal a m'exprimer ^^

ils m'ont demandé si je pouvais ouvrir une fenetre explorateur windows où ils n'auraient qu'à fair "clic droit+ imprimer"

Non, ce n'est pas possible, car pour avoir la fonction imprimer dans le menu contextuel en faisant un clic droit sur un fichier PDF, il faut qu'il soit ouvert dans le navigateur internet, il n'y a que le menu contextuel du navigateur internet qui propose d'imprimer, donc l'histoire d'ouvrir l'explorateur windows et de pouvoir faire un clic droit sur un fichier PDF pour l'imprimer n'est pas possible.

Donc ce point est réglé, même si c'est d'un point de vue négatif.
Et donc, s'ils ont proposé d'ouvrir l'explorateur windows, c'est que les fichiers PDF sont sur leur(s) ordinateur(s), il ne t'es donc pas possible depuis ton site de leur permettre d'imprimer un de leur fichier PDF.
Si tu veux leur permettre d'imprimer rapidement un fichier PDF depuis ton site, il faut que les fichiers PDF soient situés sur le serveur du site et non sur leurs ordinateurs.

Nathan T
Auteur

Les pdf sont stocké sur le serveur commun à tout le bureau d'étude donc tout le monde y a accès.
Je veux créer une arborescence de dossier sur ce serveur (donc disponible de tous les postes sur le reseau) et y stocker les pdf.
Le but et d'ouvrir l'explorateur windows dans des dossiers spécifique ou, d'imprimer depuis mon site mais je n'arrive vraiment pas avec le code que j'ai trouvé plus haut (tu me l'a expliqué en bref mais je ne vois pas comment l'inserer dans une page html sur un lien ou bouton).

Si je reprend l'idée d'aller imprimer depuis mon site, cet méthode suivante fonctionne-t-elle ?

<A href="javascript:ouvre_popup('popup.pdf')">Ouverture d'un popup</A>
<SCRIPT language="javascript">
   function ouvre_popup( _ _ _ .pdf) {
       $doc ="window.open('cheminverspdf/fichier.pdf')";
       $doc.onload="windows.print()"
   }
</SCRIPT>

Ou avec ma ligne de code suivante :

<a onclick="window.open('Base_de_donnees_PDF/UNILED/UNILED_45C_+/certification_NF.pdf')">
<img src="Images/logopdf.png" title="Certificat" width="25"></a>

Je peux peut-être joindre le codage avec lancement d'impression automatique trouvé plus haut ?
Le lien ici téléchargeable en bas.
Si oui comment l'insérer ?
Je vois vraiment pas comment :$ si tu pouvais me faire un exemple s'il te plait car moi je met les balises php un peu en mode yolo :-/

Mon site sera local donc hébergé par le serveur de l'entreprise, les documents de même.
Tout sera sur le serveur de l'entreprise.

Je veux créer une arborescence de dossier sur ce serveur (donc disponible de tous les postes sur le reseau) et y stocker les pdf.

Tu veux dire que tu vas faire une copie des fichiers PDF du réseau sur le serveur de ton site ?
Si tu veux faire ça, tu vas leur multiplier par deux l'occupation de stockage du serveur.

je n'arrive vraiment pas avec le code que j'ai trouvé plus haut (tu me l'a expliqué en bref mais je ne vois pas comment l'inserer dans une page html sur un lien ou bouton).

Tu ne pourras pas utiliser le script sur une page HTML, ou alors tu devras faire le lien sur ta page HTML vers une page PHP qui traitera le code du script sur cette même page PHP.
Ensuite, je le répête à nouveau, le script, (l'extension), est faîte pour fonctionner avec la librairie FPDF et sur la génération d'un fichier PDF et non pour un fichier PDF déja existant.
Et donc, pour utiliser cette extension, il te faut télécharger la librairie FPDF + le script de l'extension et les placer sur le serveur du site.
Immaginons que tu as cette structure sur ton site :

  • /webroot du site
    • /libs
      • /FPDF
        • /font
        • /makefont
        • fpdf.css
        • fpdf.php
        • pdf_js.php (librairie de l'extension)
        • pdf_autoprint.php (fichier à créer selon l'exemple donné par le script)
    • index.(html|php) (page qui liste les liens pour les pdf)
    • pdf.php (page qui fera le traitement des PDF)

Ensuite, dans la page pdf.php, tu aurais par exemple ceci : Voir l'exemple.

Nathan T
Auteur

Ah... Malheuresement cette fois j'ai tout compris :'( donc c'est purement impossible ce que je veux faire ...
Donc finalement, j'ai repris mon idée de l'explorateur windows

Pour le bouton "parcourir" où lorsque l'on est dans le fichier avec les pdf la méthode "clicdroit+imprimer" fonctionne (j'ai testé avant de te le dire) mais j'aimerais "hold/verrouiller" mon chemin d'accès vers le dossier qui stock les pdf "finaux".. Faire en sorte que mon site local serve plus qu'une interface de visionnage en popup...

J'utilise une méthode pour changer le libellé du bouton :

<form>
            <input type="file" id="hiddenfile" style="display:none" />
            <input type="button" value="Vers les pdf" onclick="getfile()" />
</form>

Et son activation:

<form>
            <input type="file" name="fiche_commerciale" src="F:\\STAGE\Base_de_donnees_PDF\UNILED\UNILED_45CES_+\fiche_commerciale_1.pdf"/>
</form>

Le 'src' ne bloque pas le chemin qui suit mais j'ai l'impression qu'il peux l'initialiser..
Me manque juste la possibilité de bloquer un chemin spécifique par produit vers son dossier de stockage pdf si il y a des solutions je suis preneur.. ^^
encore merci de ton aide