Java - Problemas con FO para pasar xml a pdf

 
Vista:

Problemas con FO para pasar xml a pdf

Publicado por Oscar Alberto Munoz Flores (1 intervención) el 31/05/2011 21:48:24
Hola buenas tardes espero me puedan ayudar lo que pasa es q tengo un problema con el FO y dos librerias que me causan conflictos aqui esta el codigo

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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
package factura;
 
import java.io.*;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.security.PrivateKey;
import java.security.cert.X509Certificate;
import java.util.List;
import mx.bigdata.sat.cfd.schema.Comprobante;
import mx.bigdata.sat.cfd.CFDv2;
import mx.bigdata.sat.security.KeyLoader;
import org.jdom.*;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;
import org.jdom.output.Format;
 
import org.apache.fop.apps.Driver;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.stream.StreamSource;
import javax.xml.transform.dom.DOMResult;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerConfigurationException;
import org.apache.avalon.framework.logger.Logger;
import org.apache.log.Hierarchy;
//import org.apache.log4j.Hierarchy; 
 
 
public final class Main {
    public static void main(String[] args) throws Exception {
        try {
 
            File file = new File(args[0]);
            Comprobante comp = CFDv2.newComprobante(new FileInputStream(file));
            CFDv2 cfd = new CFDv2(comp);
            PrivateKey key = KeyLoader.loadPKCS8PrivateKey(new FileInputStream(args[1]),(args[2]));
            X509Certificate cert = KeyLoader.loadX509Certificate(new FileInputStream(args[3]));
            Comprobante sellado = cfd.sellarComprobante(key, cert);
            String cadena = cfd.getCadenaOriginal();
            String sello = sellado.getSello();
            //System.out.println(sello); 
            //System.out.println(cadena); 
 
            //OutputStream archivo = new FileOutputStream("C:/F0008556FA.xml"); 
            //cfd.validar(); 
            //cfd.verificar(); 
            //cfd.guardar(); 
 
            // Creamos el builder basado en SAX 
            SAXBuilder builder = new SAXBuilder();
            // Construimos el arbol DOM a partir del fichero xml 
            Document documentJDOM = builder.build(new FileInputStream(args[0]));
 
 
            Element raiz = documentJDOM.getRootElement();//toma el nodo raiz del documento. 
 
            raiz.setAttribute("sello", sello);
            raiz.setAttribute("certificado", sellado.getCertificado());
            //System.out.println(raiz.getAttributeValue("sello")); 
            //System.out.println(raiz.getAttributeValue("certificado")); 
            // Recorremos los hijos de la etiqueta raíz 
            List<Element> hijosRaiz = raiz.getChildren();
            boolean Bandera=false;
            for(Element hijo: hijosRaiz)
            {
                // Obtenemos el nombre y su contenido de tipo texto 
                String nombre = hijo.getName();
 
                if (nombre.equals("Addenda"))
                {   List<Element> subHijo = hijo.getChildren();
                    for(Element hij: subHijo)
                        {
                        hij.setAttribute("CadenaOriginal", cadena);
                        //System.out.println("CadenaOriginal: "+hij.getAttributeValue("CadenaOriginal")); 
                        Bandera=true;
                        break;
                        }
                }
                if (Bandera)
                {
                    XMLOutputter out = new XMLOutputter(Format.getPrettyFormat());
                    File nuevoXML = new File(args[0]);
                    try{
                        FileOutputStream archivoXML= new FileOutputStream (nuevoXML);
                        out.output(documentJDOM, archivoXML);
 
                       }
                    catch (Exception ex){System.out.println(ex.getMessage());}
                    // Para generar el pdf a partir de un archivo.xsl y un 
                    // archivo.xml 
 
                    String strNameLogger = "logger";
                    try{
 
                        DOMResult domResultado = new DOMResult();
                        TransformerFactory tFactory = TransformerFactory.newInstance();
                        Transformer transformer = tFactory.newTransformer(new StreamSource(args[4]));
                        transformer.transform(new StreamSource(args[0]), domResultado);
 
                        Hierarchy hierar = Hierarchy.getDefaultHierarchy();
                        Logger  logger = hierar.getLoggerFor(strNameLogger);
                        Driver driver = new Driver();
 ->Problema        driver.setLogger(logger);
                        driver.setRenderer(org.apache.fop.apps.Driver.RENDER_PDF);
                        driver.setOutputStream(new java.io.FileOutputStream(args[5]));
                        driver.render((org.w3c.dom.Document) domResultado.getNode());
 
                    } catch (TransformerConfigurationException tce){
                    } catch (TransformerException te){
                    }
 
                    break;
                }
                //System.out.println("\nEtiqueta: "+nombre); 
            }
        } catch (FileNotFoundException fnfe) {
        System.out.println(fnfe.getMessage());
 
        System.exit(0);
 
        }
    }
}


El error que muestra es el siguiente
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - incompatible types
required: org.apache.avalon.framework.logger.Logger
found: org.apache.log.Logger
at factura.Main.main(Main.java:106)
utilizo el JDOM para agregar info al XML y FOP para hacerlo pdf
habra alguna forma de solucionarlo o utilizar el fo de una manera mas sencilla?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder