afficher un pdf qui se trouve sur un autre serveur

Petit nouveau ! | 4 Messages

21 sept. 2011, 11:35

Bonjour,

j ai actuellement un page php avec des liens qui peuvent être jp ou pdf, et lorsque je clique sur un lien pdf j aimerai que le pdf (qui se trouve non pas dans le même répertoire mais carrément sur un autre serveur) s affiche dans la même page et plus précisément dans un certaine div

Code : Tout sélectionner

header('Content-Description: application/pdf'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename='.basename($chemincomplet)); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Length: ' . filesize($chemincomplet)); ob_clean(); flush(); readfile($chemincompletvideo); exit; $image = $image.'<object classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" id="pdf_object" type="text/html" codetype="application/pdf" ><param name="src" value="'.$chemincompletvideo.'"><strong>[T_PDFPLUGIN_WRONG]</<strong></object>';
lorsque je clique sur le lien pdf le navigateur me propose soit de l ouvrir avec adobe soit un navigateur, si je choisi le navigateur ca affiche le pdf mais dans un autre onglet


merci pour vos réponses éclairées

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

21 sept. 2011, 12:22

salut,

je ne pense pas que cela soit possible en dehors d'une frame / iframe.

ceci dit tu ne pourra pas empêcher d’enregistrer le fichier sur le disque s'il n'y a pas de plugins adobe d'installer.


@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 4 Messages

21 sept. 2011, 14:35

Bonjour,

Code : Tout sélectionner

header('Content-Description: application/pdf'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename='.basename($chemincompletvideo)); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Length: ' . filesize($chemincompletvideo)); ob_clean(); flush(); readfile($chemincompletvideo); exit; //$image = $image.'<object classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" id="pdf_object" type="text/html" codetype="application/pdf" ><param name="src" value="'.$chemincompletvideo.'"><strong>[T_PDFPLUGIN_WRONG]</<strong></object>'; $image = $image.'<iframe src="'.basename($chemincompletvideo).'" width="500" height="800" align="middle"></iframe>'; echo $image;

j ai essayer avec la balise iframe ca fait la même chose, pourriez vous me donner un exemple? Car la je ne vois pas

tout est dans le meme fichier

merci pour vos réponses éclairées

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

21 sept. 2011, 21:23

pour commencer est ce que que le fichier pdf t'appartient ou a tu le droit de l'exploiter ?

En dehors de cela si allow_url_include n'est pas configuré à on readfile ne peux accéder à ce fichier => http://php.net/allow-url-include


quand au code y a du mélange dans entre le forcement de téléchargement (1ère partie) et l'emploi d'iframe, c'est un peu le souk.

indique simplement le lien du pdf dans le src de l'iframe!

@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 4 Messages

22 sept. 2011, 11:39

Bonjour,

c vrai que c un peu le souk, je testais les cas :-\

le fichier pdf dans mon exemple est sur mon poste quelque part dans un sous dossier et tout le monde peut y acceder

lorsque vous dites indique le lien, ca veut dire C:///dossier1/Dossier2/.toto.pdf ?
j'ai fait un essai avec l iframe et dans src c'est du type comme ci dessus
par contre le navigateur m indique par le biais d une alerte "Firefox ne sait pas ouvrir cette adresse car le protocole (c) n'est associé à aucun programme." alors que dans firefox le document adobe sont associe au plugin adob du navigateur

y a t il un header specifique à faire??

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

22 sept. 2011, 11:52

heu on ne peux accèder ainsi à un fichier sur un pc distant hein ce n'est pas possible.
déja avec un partage réseau ce serais \\ip\chemin, ou \\nomMachine\chemin à voir si cela reste dans un réseau interne pourquoi pas mais sinon sur le net faut une url dans l'iframe donc http:// etc etc.


@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 4 Messages

22 sept. 2011, 12:03

Bonjour,


la solution pour les fichiers sur des machine distants ou locals serairt les headers??
et au quel cas je ne pourrais afficher mon pdf dans une div non??

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

22 sept. 2011, 12:43

afficher dans un div NON on affiche que du html dans une page web, après c'est des applets flash ou java (pas javascript java) après peut être avec les nouvelles balises de html5 mais je ne pense pas.

il faut voir, au moins deux cas :
- le réseau local (réseau d'entreprise avec accès vpn ou directement sur le réseau) : si tu met un lien type \\nommachine\chemin\vers\le\fichier.pdf cela va l'ouvrir dans une page complète ! mais tu aura accès au fichier, peut être qu'un applet pourra y accéder et l'ouvrir (a tester) au quel cas ça pourra rentrer dans une taille donnée.
- internet la tu n'a pas le choix, avec une iframe avec une url c'est a dire que le fichier DOIT être sur un serveur web.

la fonction header ne va t'aider qu'envoyer le fichier au navigateur c'est tout.

tu peux très bien imaginer un script php qui va chercher un fichier pdf en local ou sur le réseau local du serveur et l'envoi au navigateur (après appel dans une iframe pour a taille voulu).

Il faut bien que tu comprenne que le fichier ne sera afficher dans le navigateur que si celui ci possède un plugins adobe ce n'est pas le cas pour tout le monde (moi par exemple ce n'est pas mon cas je préfère que cela soit ouvert a part et tu ne peux RIEN y faire tu n'a pas la maitrise de la machine cliente !).

le seul moyen de l'afficher "comme partie complète" de ton site serait un applet.

le problème c'est que tu ne peux être certain que les gens ai flash ou java, (c'est très rare mais pourquoi pas) imagine une client simple sans fioriture.

donc suivant les contraintes que tu a (entreprise ou pas, vitrine internet) tu ne va aller vers la même solution ;)

@+
Il en faut peu pour être heureux ......