Utilisation de JavaScript pour utiliser du contenu ou du style

La fonction de publication native de PDF vous permet d’exécuter JavaScript pour manipuler le contenu ou le style appliqué au contenu avant la génération du PDF final. Cette fonctionnalité vous permet de contrôler entièrement la manière dont votre sortie finale est générée. Par exemple, vous pouvez ajouter des informations relatives aux mentions légales à la sortie PDF, qui se trouve dans un autre PDF. Avec JavaScript, vous pouvez ajouter les informations d’avertissement légal une fois le PDF créé pour le contenu de base, mais avant la génération du PDF final.
Pour prendre en charge l’exécution de JavaScript, la fonction de publication native de PDF propose les fonctions de rappel suivantes :

  • window.pdfLayout.onBeforeCreateTOC(callback) : cette fonction de rappel est exécutée avant la génération de la table des matières.
  • window.pdfLayout.onBeforePagination(callback) : cette fonction de rappel est exécutée après la génération de la table des matières, mais avant l’ajout de sauts de page dans le PDF.
  • window.pdfLayout.onAfterPagination(callback) : cette fonction de rappel est exécutée après l’ajout de la table des matières et des sauts de page dans le PDF.
NOTE
En interne, une séquence d’exécution est conservée pour ces fonctions de légende. Tout d’abord, onBeforeCreateTOC est exécuté, suivi de onBeforePagination, et enfin de onAfterPagination.

Selon le type de modification de contenu ou de style que vous souhaitez effectuer, vous pouvez choisir la fonction de rappel à utiliser. Par exemple, si vous souhaitez ajouter du contenu, il est recommandé de le faire avant que la table des matières ne soit générée. De même, si vous souhaitez effectuer des mises à jour de style, celles-ci peuvent être effectuées avant ou après la pagination.

Dans l’exemple suivant, la position des titres des figures est modifiée de à au-dessus des images et en dessous des images. Pour cela, vous devez activer l’option d’exécution JavaScript dans le paramètre prédéfini. Pour ce faire, procédez comme suit :

  1. Ouvrez le paramètre prédéfini pour le modifier.
  2. Accédez à l’onglet Avancé.
  3. Sélectionnez l’option Activer JavaScript.
  4. Enregistrez le paramètre prédéfini et fermez.

Créez ensuite un fichier JavaScript avec le code suivant et enregistrez-le dans le dossier Ressources de votre modèle :

...
/*
* DITA only allows the figure title to be placed above images
* This JavaScript code is used to move the figure title below the image
* */
window.addEventListener('DOMContentLoaded', function () {
    window.pdfLayout.onBeforeCreateTOC(function() {
        var titleNodes = document.querySelectorAll('.fig > .title')
        for (var i = 0; i < titleNodes.length; i++) {
            var titleNode = titleNodes[i]
            var figNode = titleNode.parentNode
            var imageNode = figNode.querySelector('.image')
            if(imageNode && imageNode.parentNode !== figNode) {
              imageNode = imageNode.parentNode
            }
            if (figNode && imageNode && imageNode.parentNode === figNode) {
                figNode.insertBefore(imageNode, titleNode)
            }
        }
    })
});
...
NOTE
La fonction window.addEventListener('DOMContentLoaded', function () doit être appelée avant l’utilisation des fonctions de rappel .

Ensuite, ce script doit être appelé à partir d’un fichier modèle utilisé pour générer la sortie PDF. Dans notre exemple, nous l’ajouterons au modèle de table des matières. Assurez-vous que la balise <script> est ajoutée dans une balise <div> prédéfinie au sein de la balise <body> . Si vous l’ajoutez dans la balise <head> ou en dehors de la balise <body>, le script ne s’exécute pas.

{width="500"}

La sortie générée à l’aide de ce code et du modèle affiche le titre de la figure sous l’image :

{width="500"}

Ajouter un filigrane à la sortie PDF pour les brouillons de documents watermark-draft-document

Vous pouvez également utiliser JavaScript pour ajouter des filigranes conditionnels. Ces filigranes sont ajoutés à votre document lorsque la condition définie est remplie.
Par exemple, vous pouvez créer un fichier JavaScript avec le code suivant pour créer un filigrane dans la sortie PDF du document qui n’a pas encore été approuvé. Ce filigrane n’apparaît pas si vous générez le PDF du document au statut docstate « Approuvé ».

...
/*
* This file can be used to add a watermark to the PDF output
* */

window.addEventListener('DOMContentLoaded', function () {
    var watermark = 'Draft'
    var metaTag = document.getElementsByTagName('meta')
    css = "@page {\n  @left-middle {\n    content: \"".concat(watermark, "\";\n    z-index: 100;\n    font-family: sans-serif;\n    font-size: 80pt;\n    font-weight: bold;\n    color: gray(0, 0.3);\n    text-align: center;\n    transform: rotate(-54.7deg);\n    position: absolute;\n    left: 0;\n    top: 0;\n    width: 100%;\n    height: 100%;\n  }\n}")
    head = document.head || document.getElementsByTagName('head')[0], style = document.createElement('style');
    style.appendChild(document.createTextNode(css));
    window.pdfLayout.onBeforePagination(function () {
        for (let i = 0; i < metaTag.length; i++) {
            if (metaTag[i].getAttribute('name') === 'docstate' && metaTag[i].getAttribute('value') !== 'Approved') {
                head.appendChild(style);
            }
        }
    })
});
...

La sortie PDF générée à l’aide de ce code affiche un filigrane Brouillon sur la page de garde de votre document :

{width="500"}

recommendation-more-help
11125c99-e1a1-4369-b5d7-fb3098b9b178