Hello,

after testing again i noticed, that i do the call to
XSLTInputHandler with the parameters wrong, now 
i do the same code with
XSLTInputHandler input = new XSLTInputHandler(xmlSource, xslSource); 
and get the a fatal error by rendering: [Fatal Error] :1:1: Premature end of 
file.

2004-09-08 11:46:00 xslSource: [EMAIL PROTECTED]
2004-09-08 11:46:00 xmlSource: [EMAIL PROTECTED]
2004-09-08 11:46:00 actionId == 10 go to renderXML
2004-09-08 11:46:00 renderXML
2004-09-08 11:46:02 catch (Exception e)javax.servlet.ServletException: 
javax.xml.transform.TransformerException: org.xml.sax.SAXParseException: 
Premature end of file.
2004-09-08 11:46:02 END of PDF
2004-09-08 11:46:02 END ofdoGetPost(HttpServletRequest request, 
HttpServletResponse response)
2004-09-08 11:46:03 doGetPost() Request: test.pdf:;
HEADER: accept:*/*;accept-encoding:gzip, deflate;user-agent:Mozilla/4.0 
(compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 
1.1.4322);host:localhost:8080;connection:Keep-Alive;cookie:JSESSIONID=D6B77EAFB03D2225EDE631A163F88B92;

the code:

<snip>
public void renderXML(XSLTInputHandler input,
                          HttpServletResponse response) throws ServletException 
{
        try {
            log("renderXML");
            ByteArrayOutputStream out = new ByteArrayOutputStream();

            response.setContentType("application/pdf");
            //response.setHeader(       "Content-disposition","inline; 
filename=test.pdf" );

            Driver driver = new Driver();
            driver.setLogger(logPDF);
            driver.setRenderer(Driver.RENDER_PDF);
            driver.setOutputStream(out);
            driver.render(input.getParser(), input.getInputSource());

            byte[] content = out.toByteArray();
            response.setContentLength(content.length);
            response.getOutputStream().write(content);
            response.getOutputStream().flush();
        } catch (Exception ex) {
            throw new ServletException(ex);
        }
    }
</snip>





Does your browser open a PDF viewer? 
No!
Do you get error messages? Which messages? Yes, please see below.

Can you download the expected content using a command line tool?
Yes i can perform the operation with saving the xml-source as file and then 
transform over fop.bat by command line.


I have log all the steps in Tomcat 4.2.9, i am using java 1.4.

Here it goes:
2004-09-08 10:36:10 START of PDF
2004-09-08 10:36:10 actionId == 10
2004-09-08 10:36:10 try
2004-09-08 10:36:10 if (logPDF == null)
2004-09-08 10:36:10 sXSL: 
http://localhost:8080/ho/cfcreports/xsl/cfcreportpdf.xsl
2004-09-08 10:36:10 sReturnString: <?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet 
href="http://localhost:8080/ho/cfcreports/xsl/cfcreportpdf.xsl"; 
type="text/xsl"?>
<root lang="en">
<user>
<name>Administrator</name>
<nr>1</nr>
</user>
<interaction>
<api>
<uri>cfcreports</uri>
<name></name>
</api>
<maskStatus></maskStatus>
<maskStatusInteger>0</maskStatusInteger>
<selectdocument>true</selectdocument>
</interaction><head>
    <title>Account Posting</title>
  </head>
<body><tabelle name="R_KONTOBUCHUNG" title="account posting" rows="180">
... etc
</row>
</tabelle></body></root>
2004-09-08 10:36:10 xslSource: [EMAIL PROTECTED]
2004-09-08 10:36:10 xmlSource: [EMAIL PROTECTED]
2004-09-08 10:36:10 catch (Exception e)org.apache.fop.apps.FOPException: 
javax.xml.transform.TransformerConfigurationException: 
javax.xml.transform.TransformerException: java.net.MalformedURLException
2004-09-08 10:36:10 END of PDF
2004-09-08 10:36:10 END ofdoGetPost(HttpServletRequest request, 
HttpServletResponse response)

the sReturnString comes from a java instance as string,
the stylesheet is for testing hardcoded:
String sHost = hoToolSet.getHttpProtocol( c_request ) + "://" + 
c_request.getHeader("host");
String sXSL = sHost + "/ho/cfcreports/xsl/cfcreportpdf.xsl";
Because of an exception the call
XSLTInputHandler input = new XSLTInputHandler(xslSource, xmlSource); is not 
performed.

The CODE:

<snip>
log("START of PDF");
                log("actionId == 10");
                
                // Source xslSource =  new SAXSource(new InputSource(new 
URL(sXSL).openStream()));
                // Source xmlSource = new SAXSource(new InputSource(new 
StringReader(sReturnString)));
                // ByteArrayInputStream xmlin = new 
ByteArrayInputStream(xml.getBytes()); 
                        //ByteArrayInputStream xslin = new 
ByteArrayInputStream(xsl.getBytes()); 
                     try {
                                log("try");
                                if (logPDF == null)
                                {
                                        log("if (logPDF == null)");
                                logPDF = new 
ConsoleLogger(ConsoleLogger.LEVEL_INFO);
                                MessageHandler.setScreenLogger(logPDF);
                                }
                                String sHost = hoToolSet.getHttpProtocol( 
c_request ) + "://" + c_request.getHeader("host");
                                String sXSL = sHost + 
"/ho/cfcreports/xsl/cfcreportpdf.xsl";
                                log("sXSL: " +  sXSL);
                                log("sReturnString: " +  sReturnString);
                                        InputSource xslSource = new 
InputSource(new URL(sXSL).openStream());
                                InputSource xmlSource = new InputSource (new 
StringReader(sReturnString));
                                log("xslSource: " +  xslSource);
                                log("xmlSource: " +  xmlSource);
                                        XSLTInputHandler input = new 
XSLTInputHandler(xslSource, xmlSource); 
                                //StreamSource xmlSource = new StreamSource(new 
StringReader(sReturnString));
                                        log("actionId == 10 go to renderXML" );
                        renderXML(input, c_response);
                }
                        catch (Exception e)
                        {
                                log("catch (Exception e)" + e);
                        }
                log("END of PDF");
</snip>

Thanks,

Hans Braumüller

Braumüller wrote:
> i am trying to generate pdf on fly from dynamic xml-source
...
> What is wrong ?

I have no idea. Would you care to describe what you expect,
and what you got instead?
Does your browser open a PDF viewer? Do you get error
messages? Which messages? Can you download the expected
content using a command line tool?

BTW
  InputSource xmlSource =
    new InputSource(new StringReader(sReturnString));
In 99% of all cases I've seen this kind of code
indicates either a major design flaw or that you are
using the wrong tool to solve your problem.

J.Pietschmann



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to