xmlgraphics-fop-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Christian Pestel" <christian.pes...@orange.fr>
Subject fo to Intermediate Format transform - Image file locked after transformation / Fop trunk.Feb.11.2013
Date Thu, 07 Mar 2013 15:44:01 GMT
Hi,

I try to convert a fo file to Intermediate Format (IF) file with a fop server (i.e. JVM never
terminate)  
fo file contain an external-graphics jpg image.
The problem  : at the end of FO2IF transformation, the file signature.jpg remain locked by
java.

This problem don’t happen with fo to pdf transformation.
This problem don’t happen with fop used with command line because java terminate and close
all files.
I join you a logs.zip (FO2IF.log and FO2PDF.log)

I use version Fop Trunk 1447488   Feb 11 2013

This is my FO source file

<?xml version="1.0" encoding="utf-8"?><fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set><fo:simple-page-master master-name="section1" page-width="8.268in"
page-height="11.693in" margin-top="35.4pt" margin-bottom="35.4pt" margin-right="70.85pt" margin-left="70.85pt"><fo:region-body
margin-top="35.45pt" margin-bottom="35.45pt" /></fo:simple-page-master></fo:layout-master-set><fo:page-sequence
master-reference="section1" format="1">
<fo:flow flow-name="xsl-region-body">

<fo:block><fo:inline><fo:external-graphic src="file:///C:/Images/signature.jpg"
/></fo:inline></fo:block>

</fo:flow></fo:page-sequence></fo:root>



This is my java source file

...
Source inputSource = new StreamSource( new File(inputFilename) ); //FO file
File outputFile = new File(outputFilename);  //IF file
convertFromIntermediate(inputSource, outputFile, mimeType); // MimeConstants.MIME_PDF or MimeConstants.MIME_AFP
for RendererMimic
...


/**
* Converts an XSL-FO document to an intermediate file.
* @param src the source file
* @param intermediate the target intermediate file
* @param mimeType the MIME type of the final document
* @throws IOException In case of an I/O problem
* @throws FOPException In case of a FOP problem
* @throws TransformerException In case of a XSL transformation problem
*/
public void convertToIntermediate(Source src, File intermediate, String mimeType)
    throws IOException, FOPException, TransformerException 
{
    FopRunner.trace("Converting to intermediate format...");
    //Create a user agent
    FOUserAgent userAgent = fopFactory.newFOUserAgent();

    //Create an instance of the target document handler so the IFSerializer
    //can use its font setup
    FopRunner.trace("MIME Type = " + mimeType);
    IFDocumentHandler targetHandler = userAgent.getRendererFactory().createDocumentHandler(userAgent,
mimeType); 

    //Create the IFSerializer to write the intermediate format
    IFSerializer ifSerializer = new IFSerializer(new IFContext(userAgent));

    //Tell the IFSerializer to mimic the target format  
    ifSerializer.mimicDocumentHandler(targetHandler);

    //Make sure the prepared document handler is used
    userAgent.setDocumentHandlerOverride(ifSerializer);

    // Setup output
    OutputStream out = new java.io.FileOutputStream(intermediate);
    out = new java.io.BufferedOutputStream(out);
    
    try 
    {
        // Construct FOP (the MIME type here is unimportant due to the override
        // on the user agent)
        Fop fop = fopFactory.newFop(null, userAgent, out);

        // Setup XSLT
        TransformerFactory factory = TransformerFactory.newInstance();
        Transformer transformer = factory.newTransformer();
        
        // 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();
    }
}


 

Christian Pestel

christian.pestel@orange.fr

Mime
View raw message