PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WEBDEV (précédentes versions) → WEBDEV : Afficher un PDF (presque comme avec Acrobat Reader) de façon simple.
WEBDEV : Afficher un PDF (presque comme avec Acrobat Reader) de façon simple.
Débuté par Philippe Pasquali, 28 juil. 2017 17:32 - 3 réponses
Membre enregistré
945 messages
Popularité : +102 (110 votes)
Posté le 28 juillet 2017 - 17:32
Voici une méthode simple (il y en a surement d'autre...) pour afficher, dans une page web, un fichier pdf comme sur cette image.



Environement de test :
- Serveur Linux : Ubuntu 14.04.5 (3.13.0-121-generic - x86_64)
- Serveur Apache2 : Apache/2.4.10 (Ubuntu)
- Serveur d'application : WebDev 20 64 bits
- Webdev : version 20

Attention le temps de chargement/affichage du pdf est proportionel à sa taille...

Partie Webdev :
- Mettre sur votre page web un champ HTML (je l'ai appelé HTML_PDF)
- Dimensionnez le à la bonne taille (j'ai mis 974x566)
- Code du champ HTML_PDF (peut être bien évidement être mis par programmation)

CodeHTML, PDFFile est une chaîne

CodeHTML = [
<p style="text-align: center;">
<object id="pdf"
width="%1"
height="%2"
data="http://mozilla.github.io/pdf.js/web/viewer.html?file=%3#zoom=100" type="text/html">
Mettre le navigateur a jour...
</object>
</p>
]

HTML_PDF = ""
HTML_PDF..Visible = False

PDFFile = ChaîneConstruit("http://%1/%2", NetAdresseIP(), "postgresql-9.6-A4.pdf")
PDFFile = URLEncode(PDFFile)
PDFFile = Remplace(PDFFile, ":", "%3A")
PDFFile = Remplace(PDFFile, "/", "%2F")

IF ChampExiste(HTML_PDF) _AND_ TypeVar(HTML_PDF) = 19 THEN
HTML_PDF = ChaîneConstruit(CodeHTML, HTML_PDF..Largeur, HTML_PDF..Hauteur, PDFFile)
HTML_PDF..Visible = True
ELSE
IF NOT ChampExiste(HTML_PDF) THEN
Erreur("Erreur de programme !","Le champ HTML_PDF n'existe pas...")
ELSE
Erreur("Erreur de programme !","Le champ HTML_PDF n'est pas un champ de type HTML...")
END
END


Partie Apache
- vérifiez avec la commande : «sudo apache2ctl -M» si le module «headers_module» est la liste des modules actifs.
Dans le cas contraire exécutez la commande : «sudo a2enmod headers»
Ajouter à la fin du fichier de configuration «/etc/apache2/apache2.conf» les 3 lignes suivantes :
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>
Relancer le serveur apache2

Note
Le fichier pdf doit être accéssible sur "votre" serveur via une url.
Pour vérifier l'adresse, mettez la dans un navigateur et vous devez avoir la fenêtre proposant le téléchargement du fichier.
Exemple : https://<adresse ip de votre serveur>/postgresql-9.6-A4.pdf ce qui corespond
au fichier physique (sur mon serveur) à «/var/www/html/postgresql-9.6-A4.pdf»
Membre enregistré
945 messages
Popularité : +102 (110 votes)
Posté le 01 août 2017 - 15:42
Si vous utilisez IIS le principe et le code HTML est identique, mais vous devez ajouter pour votre site WebDev l'entête de réponse HTTP suivante :
Nom : Access-Control-Allow-Origin
Valeur : *
Pour cela ouvrir la console d'administration IIS
Cliquez sur le site à gérer
Cliquez sur «En-tête de réponse HTTP»
Clique-droit et «Ajouter»

Ne pas oublier de créer un répertoire virtuel pointant sur le répertoire physique de stockage des fichiers pdf.

Fonctionne avec
Firefox 54.0.1,
Chrome 59.0.3071.115
Safari 5.1.7 (7534.57.2)
IE 11.0.9600.18097
Posté le 25 août 2017 - 15:34
Bonjour et tout d'abord un énorme merci pour votre contribution.

Je suis en train de la tester justement. Cependant les PDF étant tous en local sur ma machine il me renvoi une erreur File missing...

Je suis pourtant bien dans un répertoire web local.

Avez-vous une information à ce sujet?
D'avance merci.
Membre enregistré
945 messages
Popularité : +102 (110 votes)
Posté le 25 août 2017 - 17:26
Bonjour,
Avez-vous configuré IIS local, pour l'Access-Control?
Pour cela ouvrir la console d'administration IIS
Cliquez sur le site à gérer
Cliquez sur «En-tête de réponse HTTP»
Clique-droit et «Ajouter»
-> Nom : Access-Control-Allow-Origin
-> Valeur : *

Le répertoire par défaut pour IIS est «C:\inetpub\wwwroot\», j'ai donc créé un répertoire physique «C:\inetpub\wwwroot\pdffiles» dans lequel j'ai mes fichiers pdf.
Avec la console d'administration de IIS j'ai créé un répertoire virtuel «pdffiles» pointant sur le répertoire «C:\inetpub\wwwroot\pdffiles».
Si en exécution vous avez la page avec le bouton "Plus d'informations" cliquez dessus, il vous indiquera le chemin physique du fichier qu'il tente de charger. En le copiant/collant dans la barre d'adresse de votre navigateur IIS vous expliquera exactement ce qui ne va pas.

Bon dev et n'hésitez pas à me tenir au courant...