Skip to content

$pdf.generate

Description

Génère un PDF par transformation xslt/fop.

La méthode sauvegarde une copie de l'arbre XML des données sources dans le fichier _output-pdf.xml lorsque la propriété admin.dumpOutput du fichier de configuration est activée.

Syntaxe

$pdf.generate( xsl [ , xml [ , pdf [ , params [ , options ] ] ] ] )

Paramètres

xsl string / file

Feuille de style xsl/fop.

Il est possible de passer les données xsl brutes sous forme de string, ou il est possible de référencer un fichier, auquel cas la valeur doit être du type file.

xml string / file

Données xml à transformer.

Il est possible de passer les données xml brutes sous forme de string, ou il est possible de référencer un fichier, auquel cas la valeur doit être du type file.

pdf file / string
Fichier PDF de sortie. Peut être null, auquel cas la méthode se charge de générer un fichier dans le répertoire de travail.
params map
Paramètres à passer à la feuille de style.
options map

Options de transformation. Les options disponibles sont:

transformer string
Classe de type "TransformerFactory" à utiliser pour la transformation xslt vers fop. Des exemples de valeurs possibles sont données pour la propriété transformerFactory du fichier de configuration.
basedir file / string

Dossier de référence pour la résolution des chemins en relatif. Ce paramètre accepte soit un file soit un path sous forme de string. Si la feuille de style xsl référence des dépendances externes (p.ex via un <xsl:import> ou <xsl:include>}, alors le fichier sera recherché relativement au path indiqué.

Si l'option n'est pas définie mais que le paramètre xsl` référence, un fichier, alors le path est déterminé à partir du chemin du fichier.

Retour

Le résultat de la transformation xsl.

Exemple

Exemple de génération d'un PDF statique, avec code inline.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
var pdf = $pdf.generate(
   `<?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" exclude-result-prefixes="fo">
        <xsl:output method="xml" encoding="UTF-8" version="1.0" omit-xml-declaration="no" indent="yes"/>

        <xsl:template match="/">
            <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
                <fo:layout-master-set>
                    <fo:simple-page-master master-name="simpleA4" page-height="29.7cm" page-width="21cm" margin-top="5mm" margin-left="5mm" margin-right="5mm" margin-bottom="5mm">
                    <fo:region-body  border-style="none" border-width="0.2mm" margin-top="10mm" margin-left="15mm" margin-right="10mm" margin-bottom="5mm"/>
                    <fo:region-after region-name="simpleA4-footer"/>
                    </fo:simple-page-master>
                </fo:layout-master-set>

                <fo:page-sequence master-reference="simpleA4">
                    <fo:flow flow-name="xsl-region-body">
                        <fo:block>Hello World!</fo:block>
                    </fo:flow>
                </fo:page-sequence>
            </fo:root>
        </xsl:template>
    </xsl:stylesheet>`
);

// envoi du PDF en réponse
$response.setContentType("application/pdf");
$response.addContent(pdf);

Exemple de transformation s'appuyant sur des éléments (XSL et XML) externes, et avec passage de paramètres.

1
2
$pdf.generate($app.getResource("fop/AttestationVendeur.xsl"), xml, null,
              { imagesPath: $str.replace($app.getResource("resources/images"), "\\", "/") });