Dans le cadre d'applications particulières (vb, perl, ...), il peut être intéressant de proposer les résultats d'une requête au format pdf. Par exemple pour gérer une impression avec changement de page sans couper vos tableaux.
Programmation
Recherche :   
Actualité Système Salon Concours Outils Programmation Devparadise Programmation HTML .Net JavaScript VBScript ASP PHP Visual Basic Perl Java Active X SQL XML WAP Delphi Graphisme Flash Web Design Promotion Référencement Publicité Valeur de votre site Outils Systèmes Windows Unix Linux Benchmark Hardware Réseaux locaux Droit Sécurité
Génération de fichiers PDF à la volée.
  Auteur : Eric PETIT

Dans le cadre d'applications particulières (vb, perl, ...), il peut être intéressant de proposer les résultats d'une requête au format pdf. Par exemple pour gérer une impression avec changement de page sans couper vos tableaux.

Publicité 
     L'édition de texte, le changement de police, de couleur ou taille, la création de graphique, toutes ces fonctions sont facile à comprendre si l'on ne s'occupe pas de la compression.
     Sachant cela, pourquoi ne pas créer des fichiers pdf (Adobe Portable Document Format) à la volée en changeant uniquement le "Content-type: text/html" en "Content-type: application/pdf".
     Malheureusement, le test effectué avec un cgi en visual basic n'a pas été concluant. Le navigateur propose le téléchargement du fichier, dans le meilleur des cas, ou affiche le contenu du fichier (pas facile à lire !).
     Le problème réside dans l'extension du fichier. Si vous utiliser un cgi vb, votre fichier porte l'extension ".exe", il ne sera pas interpr;té comme un fichier pdf, si vous trichez pour le renommer ".pdf" il ne sera pas exécuté.
     Il reste une solution, créer un fichier pdf temporaire sur votre disque dans une zone accessible et rediriger l'utilisateur vers ce fichier.

     Dans cette hypothèse, il n'est donc plus nécessaire de recréer tout le code du fichier pdf, plusieurs outils sont disponibles gratuitement et permettent de créer des fichiers pdf et en plus compressés.

Je vous propose deux possibilités:

1.) Utilisation du logiciel HTMLDoc.
     Ce logiciel permet la conversion d'un fichier au format html en fichier au format pdf ou ps (PostScript).
     Il vous suffit de créer un fichier HTML comprenant les tags courant (titre, tableaux, font ...) et de l'enregistrer ce fichier sur votre disque :

- en vb

    Dim U As Long
    Dim Tampon As String

    Tampon = "<HTML><HEAD><TITLE>Mon fichier pdf</TITLE>" & vbCrLf & _
    "<META NAME=""COPYRIGHT"" CONTENT=""Copyright 1999 Luc PETIT Ingénieur Conseil"">" & vbCrLf & _
    "</HEAD><BODY>Mon contenu HTML...</BODY></HTML>" & vbCrLf

    U = FreeFile
    Open "C:chemin om_du_fichier.html" For Output As #U
    Print #U, Tampon
    Close #U

- en perl pour Windows
    $Tampon = "<HTML><HEAD><TITLE>Mon fichier pdf</TITLE> ";
    $Tampon = $Tampon . "<META NAME="COPYRIGHT" CONTENT="Copyright 1999 Luc PETIT Ingénieur Conseil"> ";
    $Tampon = $Tampon . "</HEAD><BODY>Mon contenu HTML...</BODY></HTML> ";

    open (FP, ">>C:chemin om_du_fichier.html") || die ("C:chemin om_du_fichier.html: $! ");
    print FP $Tampon . " ";
    close (FP);

Ensuite, convertissez le à l'aide du logiciel HTMLDoc:
- en vb

U = Shell("C:Chemin_HTMLDocHTMLDOChtmldoc -t pdf12 --size A4 --fontsize 10 --footer 1 --no-toc --pagemode document --webpage C:chemin om_du_fichier.html -f C:chemin om_du_fichier.pdf")

- en perl pour Windows

system "C:Chemin_HTMLDocHTMLDOChtmldoc -t pdf12 --size A4 --fontsize 10 --footer 1 --no-toc --pagemode document --webpage C:chemin om_du_fichier.html -f C:chemin om_du_fichier.pdf";

La ligne de commande est expliqué dans le fichier d'aide d'HTMLDoc

    -t pdf12 : pour créer un fichier pdf 1.2 soit acrobat reader 3
    --size A4 : format des pages A4
    --fontsize 10 : taille par défaut 10
    --footer 1 : pied de page avec numéro de page
    ...

Pour finir, redirigez votre visiteur
pour cela envoyer la page

<HTML>
<HEAD>
<TITLE>Mon Test</TITLE>
<META HTTP-EQUIV="Refresh" CONTENT="0; URL=/Chemin_virtuel/nom_du_fichier.pdf">
</HEAD>
<BODY>
</BODY>
</HTML>

Notons que cette méthode permet de donner le choix du type de sortie html ou pdf.

2.) Utilisation de la librairie pdflib.
     Cette méthode évite de passer par un fichier html intermédiaire, mais vous oblige à travailler en coordonnées.
     C'est à dire que vos tableau doivent être dessiné par votre programme trait par trait.
     Les textes sont placés de la même manière.

     Les différentes commandes sont détaillées dans la documentation.
     Vous trouverez également des exemples d'utilisation ci-dessous.

     Une fois votre fichier créé, faites également une redirection.

Attention: plusieurs utilisateurs peuvent demander votre script en même temps, n'oubliez pas de gérer des noms de fichier uniques.

Lire attentivement les licences d'utilisation.

Téléchargement:
HTMLDoc 1.8.1
Source C de HTMLDoc 1.8.1
Home page de HTMLDoc 1.8.1
PdfLib 2.01
exemple vb
exemple perl
Home page de PdfLib 2.01
zlib et source Mac Unix

A lire aussi sur Devparadise.com :
  • Création en VB6 d'une DLL ActiveX utilisant GDI+, et appel de cette dernière ...
  • ASP et la création d'images à la volée
  • Visioneuse d'image en Visual Basic
  • Utilisation de l'utilitaire HTMLDOC
  • Créer et envoyer un mail en Perl. (HTML, pièces jointes...)
  • A télécharger aussi sur Devparadise.com :
  • SOURCES : Création en VB6 d'une DLL ActiveX utilisant GDI+, et appel de cette...
  • XAMPP 1.5.1 pour windows
  • PDFCreator 0.8.1 RC 10
  • Contrôleur d'attributs (Source VB)
  • Visioneuse d'image en Visual Basic

  • © 1997-2009 tous droits réservés Devparadise.com
    Les logos, et marques déposées sont la propriété de leurs détenteurs respectifs.
    Devparadise.com s'est engagé à respecter la confidentialité des données personnelles régies par la loi 78-17 du 6 janvier 1978.
    Déclaration C.N.I.L. n° 621623
    PDF,ACROBAT,PDFLIB,Perl,VB