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
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?
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


0