IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XSL/XSLT/XPATH XML Discussion :

Générer un PDF/A-1b avec FOP


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Points : 9
    Points
    9
    Par défaut Générer un PDF/A-1b avec FOP
    Bonjour,
    j'essaye de générer un fichier PDF norme PDF/A-1b à l'aide de la version fop-0_94 de FOP.

    j'ai ça comme erreur :
    19 oct. 2007 14:40:45 org.apache.fop.fo.FOTreeBuilder fatalError
    GRAVE: org.apache.fop.pdf.PDFConformanceException: For PDF/A-1b, all fonts, even the base 14 fonts, have to be embedded! Offending font: Times-Roman
    (Emplacement inconnu de l'erreur)org.apache.fop.pdf.PDFConformanceException: For PDF/A-1b, all fonts, even the base 14 fonts, have to be embedded! Offending font: Times-Roman

    Voici mon code source :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
     
    import java.io.File;
    import java.io.OutputStream;
     
    //JAXP
    import javax.xml.transform.Transformer;
    import javax.xml.transform.TransformerFactory;
    import javax.xml.transform.Source;
    import javax.xml.transform.Result;
    import javax.xml.transform.stream.StreamSource;
    import javax.xml.transform.sax.SAXResult;
     
    //FOP
    import org.apache.fop.apps.FOUserAgent;
    import org.apache.fop.apps.Fop;
    import org.apache.fop.apps.FopFactory;
    import org.apache.fop.apps.MimeConstants;
    import org.apache.fop.fo.FOElementMapping;
    import org.apache.fop.fo.extensions.ExtensionElementMapping;
    import org.apache.fop.fo.extensions.svg.BatikExtensionElementMapping;
    import org.apache.fop.fo.extensions.svg.SVGElementMapping;
    import org.apache.fop.fo.extensions.xmp.RDFElementMapping;
    import org.apache.fop.fo.extensions.xmp.XMPElementMapping;
    import org.apache.fop.render.ps.extensions.PSExtensionElementMapping;
     
    /**
     * This class demonstrates the conversion of an XML file to PDF using 
     * JAXP (XSLT) and FOP (XSL-FO).
     */
    public class ExampleXML2PDF {
     
        /**
         * Main method.
         * @param args command-line arguments
         */
        public static void main(String[] args) {
            try {
                System.out.println("FOP ExampleXML2PDF\n");
                System.out.println("Preparing...");
     
                // Setup directories
                File baseDir = new File("files");
                File outDir = new File(baseDir, "pdf");
                outDir.mkdirs();
     
                // Setup input and output files            
                File xmlfile = new File(baseDir, "xml/projectteam.xml");
                File xsltfile = new File(baseDir, "xslt/projectteam2fo.xsl");
                File pdffile = new File(outDir, "ResultXML2PDF.pdf");
     
                System.out.println("Input: XML (" + xmlfile + ")");
                System.out.println("Stylesheet: " + xsltfile);
                System.out.println("Output: PDF (" + pdffile + ")");
                System.out.println();
                System.out.println("Transforming...");
     
                // configure fopFactory as desired
                FopFactory fopFactory = FopFactory.newInstance();
     
                FOUserAgent foUserAgent = fopFactory.newFOUserAgent();
                foUserAgent.getRendererOptions().put("pdf-a-mode", "PDF/A-1b");
                // configure foUserAgent as desired
     
                // Setup output
                OutputStream out = new java.io.FileOutputStream(pdffile);
                out = new java.io.BufferedOutputStream(out);
     
                try {
                    // Construct fop with desired output format
                    Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, foUserAgent, out);
     
                    fopFactory.addElementMapping(new FOElementMapping());
        		    fopFactory.addElementMapping(new SVGElementMapping());
        		    fopFactory.addElementMapping(new BatikExtensionElementMapping());
        		    fopFactory.addElementMapping(new ExtensionElementMapping());
        		    fopFactory.addElementMapping(new XMPElementMapping());
        		    fopFactory.addElementMapping(new RDFElementMapping());
        		    fopFactory.addElementMapping(new PSExtensionElementMapping());
     
                    // Setup XSLT
                    TransformerFactory factory = TransformerFactory.newInstance();
                    Transformer transformer = factory.newTransformer(new StreamSource(xsltfile));
     
                    // Set the value of a <param> in the stylesheet
                    transformer.setParameter("versionParam", "2.0");
     
                    // Setup input for XSLT transformation
                    Source src = new StreamSource(xmlfile);
     
                    // Resulting SAX events (the generated FO) must be piped through to FOP
                    Result res = new SAXResult(fop.getDefaultHandler());
     
                    // Start XSLT transformation and FOP processing
                    transformer.transform(src, res);
                } finally {
                    out.close();
                }
     
                System.out.println("Success!");
            } catch (Exception e) {
                e.printStackTrace(System.err);
                System.exit(-1);
            }
        }
    }
    Si quelqu'un a une idée de comment résoudre mon problème, je serai bien heureux de le lire.

    Merci d'avance.

  2. #2
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 50
    Points : 56
    Points
    56
    Par défaut
    il faut embarquer les FONTS dans le PDF (à travers FOP)

    pour cela il te faut les déclarer correctement dans le userconfig.xml
    et surtout il te faut les FONTS (en ttf, ttc ou pbf) aussi dans le répertoire avec leur XML propre de définition

    je pense que ton alerte vient de là

  3. #3
    Futur Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Merci de me repondre,
    j'ai bien les fonts embarqués/
    Le fichier fop.xconf contient ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    <?xml version="1.0"?>
    <fop version="1.0">
     
    <!-- Strict user configuration -->
      <strict-configuration>true</strict-configuration>
     
      <!-- Strict FO validation -->
      <strict-validation>true</strict-validation>
     
      <!-- Base URL for resolving relative URLs -->
      <base>./</base>
     
      <!-- Font Base URL for resolving relative font URLs -->
      <font-base>./</font-base>
     
      <!-- Source resolution in dpi (dots/pixels per inch) for determining the size of pixels in SVG and bitmap images, default: 72dpi -->
      <source-resolution>72</source-resolution>
      <!-- Target resolution in dpi (dots/pixels per inch) for specifying the target resolution for generated bitmaps, default: 72dpi -->
      <target-resolution>300</target-resolution>
     
      <!-- Default page-height and page-width, in case
           value is specified as auto -->
      <default-page-settings height="29.7cm" width="21cm"/>
     
      <!-- Information for specific renderers -->
      <!-- Uses renderer mime type for renderers -->
      <renderers>
        <renderer mime="application/pdf">
     
          <fonts>
            <font metrics-url="arial.ttf.xml" kerning="yes" embed-url="arial.ttf">
              <font-triplet name="Arial" style="normal" weight="normal"/>
            </font>
          </fonts>
     
        </renderer>
     
      </renderers>
     
    </fop>
    Les fichiers arial.ttf et arial.ttf.xml sont présents tous les deux dans le même répertoire que le fichier fop.xconf.

    Je ne comprend donc pas pourquoi il me donne ça comme résultat.

    Merci

  4. #4
    Futur Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Je pense que je me suis trompé dans mon post précédent. Tu peux me fournir si tu l'as l'ensemble des 14 polices de base (xml et ttf), avec le fichier config qui va avec.

    Merci

Discussions similaires

  1. Générer un pdf recto verso avec report builder
    Par groy1 dans le forum Reports
    Réponses: 0
    Dernier message: 18/06/2009, 17h39
  2. Générer du PDF avec QuickReport
    Par yanis97 dans le forum Composants VCL
    Réponses: 11
    Dernier message: 29/07/2008, 16h59
  3. [FPDF] Générer un pdf ou un fichier openoffice avec le php
    Par Alain15 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 28/06/2006, 03h10
  4. [FPDF] Générer un PDF avec intégration de fonctions
    Par allowen dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 25/04/2006, 13h50
  5. RTF to PDF avec FOP
    Par cash3000 dans le forum XML/XSL et SOAP
    Réponses: 8
    Dernier message: 14/04/2006, 08h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo