Les ingénieurs ColdFusion souhaitent bien entendu simplifier le travail des développeurs ColdFusion. C'est donc dans cet esprit que nous nous sommes mis au travail sur cette tâche. Que pouvions-nous créer pour permettre aux développeurs d'utiliser leur code HTML avec une seule balise ColdFusion qui entraînerait la conversion une fois la requête web invoquée par le navigateur ? La balise cfdocument est la réponse à cette question. Voici une vue générale de la syntaxe :
<cfdocument format="flashpaper/PDF"> <!—votre code HTML, CFML, et les balises cfdocumentitem-> </cfdocument>
C'est tout ! Pas de code XML, de configuration de classpath Java ou d'enregistrement de bibliothèques natives. Et certainement mieux, cette balise fait partie du moteur ColdFusion. Cette solution est disponible dès que ColdFusion est installé. Il n'est pas nécessaire de modifier les contenus HTML/CFML existants.
Nous avons également ajouté des attributs qui facilitent la manipulation de la mise en page des documents (tableau 1). Le seul élément obligatoire pour cette balise est l'attribut format, qui indique au moteur ColdFusion le type de fichier à produire (PDF ou FlashPaper) ; les autres attributs sont facultatifs.
| Attributs | Requis | Facultatif | Fonctionnalité |
|---|---|---|---|
| Format | oui | non | Indique le format à produire (PDF ou FlashPaper) |
| MarginTop | non | oui | Valeur par défaut de 0,5 pouces (l'attribut « Unit » change l'unité) |
| MarginBottom | non | oui | Valeur par défaut de 0,5 pouces (l'attribut « Unit » change l'unité) |
| MarginLeft | non | oui | Valeur par défaut de 0,5 pouces (l'attribut « Unit » change l'unité) |
| MarginRight | non | oui | Valeur par défaut de 0,5 pouces (l'attribut « Unit » change l'unité) |
| BackgroundVisible | non | oui | Permet l'apparition de la couleur ou des images d'arrière-plan (la désactivation de cet attribut accélère le traitement et réduit la quantité de mémoire utilisée) |
| Orientation | non | oui | Paysage ou portrait |
| PageType | non | oui | Format Lettre US, Légal US, A4, A5, B4, B5, B4-JIS, B5-JIS, ou personnalisé |
| PageWidth | non | oui | Largeur de la page lorsque le type de page sélectionné est personnalisé |
| PageHeight | non | oui | Hauteur de la page lorsque le type de page sélectionné est personnalisé |
| Encryption | non | oui | 128 bits, 40 bits ou aucun (fonction PDF uniquement) |
| OwnerPassword | non | oui | Mot de passe (propriétaire) du document lorsque le chiffrement est activé |
| UserPassword | non | oui | Mot de passe (utilisateur) du document lorsque le chiffrement est activé |
| Permissions | non | oui | Types de permissions |
| Unit | non | oui | Pouces ou centimètres |
| FontEmbed | non | oui | Intégration des polices dans le document |
| Filename | non | oui | Emplacement d'enregistrement du fichier |
| Overwrite | non | oui | Ecrasement du fichier s'il existe déjà |
| Name | non | oui | Enregistrement des contenus dans une variable CF |
| Scale | non | oui | Facteur de zoom du document |
La balise cfdocument devait également être robuste et conforme aux standards. Notre principale priorité était de prendre en charge le format HTML 4.01. En effet, la plupart des utilisateurs de ColdFusion utilisent le standard HTML 4.01. Deuxièmement, les versions CSS 1 et 2 étaient obligatoires étant donné que les feuilles de styles sont une partie intégrante du format HTML.
Les autres tâches étaient de fournir la prise en charge des graphiques, des liens HTML, de la sécurité et de l'accessibilité de façon à obtenir des documents fonctionnant de façon semblable au contenu affiché dans le navigateur. De plus, la prise en charge des polices spécifiées dans les contenus HTML a obligé l'équipe à faire en sorte que la balise cfdocument fonctionne avec le gestionnaire des polices de ColdFusion, qui recherche les polices nécessaires sur le système. Nous avons également pris des fonctions spécifiques au format PDF et fourni la prise en charge des langages bidirectionnels (comme l'arabe et l'hébreu) pour les documents PDF.