Search code examples
javafontsweblogictruetypeapache-fop

fop 2.1 Reached EOF when loading font on weblogic server


I have a webapp that generates PDF files. I use fop 2.1 for this, but some characters are not in the default fop font. I try to use other font, to to print all characters correctly.

If I try it in a testclass, that I execute on my PC, everything works fine. But if the application try to do the same on the weblogic server, I receive: java.io.EOFException: Reached EOF, file size=23275952 offset=23275954 error.

My fop configuration (I use the same for the test and for the application):

<fop version="2.1">
    <use-cache>false</use-cache>
    <renderers>
        <renderer mime="application/pdf">
            <fonts>
                <font embed-url="urkunde/ClearSans-Regular.ttf" kerning="yes">
                    <font-triplet name="ClearSans" style="normal" weight="normal" />
                </font>
            </fonts>
        </renderer>
    </renderers>
</fop>

The error I receive when the server try to load the font:

Mar 24, 2016 1:07:33 PM org.apache.fop.fonts.truetype.OpenFont readPostScript SEVERE: Unknown PostScript format: 1912630528 Mar 24, 2016 1:07:33 PM org.apache.fop.fonts.LazyFont load SEVERE: Failed to read font metrics file null java.io.EOFException: Reached EOF, file size=23275952 offset=23275954 at org.apache.fop.fonts.truetype.FontFileReader.seekSet(FontFileReader.java:58) at org.apache.fop.fonts.truetype.TTFFile.readName(TTFFile.java:57) at org.apache.fop.fonts.truetype.OpenFont.readFont(OpenFont.java:740) at org.apache.fop.fonts.truetype.OFFontLoader.read(OFFontLoader.java:109) at org.apache.fop.fonts.truetype.OFFontLoader.read(OFFontLoader.java:93) at org.apache.fop.fonts.FontLoader.getFont(FontLoader.java:124) at org.apache.fop.fonts.FontLoader.loadFont(FontLoader.java:108) at org.apache.fop.fonts.LazyFont.load(LazyFont.java:116) at org.apache.fop.fonts.LazyFont.getAscender(LazyFont.java:233) at org.apache.fop.fonts.Font.getAscender(Font.java:118) at org.apache.fop.layoutmgr.BlockLayoutManager.initialize(BlockLayoutManager.java:82) at org.apache.fop.layoutmgr.AbstractLayoutManager.getChildLM(AbstractLayoutManager.java:118) at org.apache.fop.layoutmgr.FlowLayoutManager.getNextKnuthElements(FlowLayoutManager.java:108) at org.apache.fop.layoutmgr.FlowLayoutManager.getNextKnuthElements(FlowLayoutManager.java:69) at org.apache.fop.layoutmgr.PageBreaker.getNextKnuthElements(PageBreaker.java:254) at org.apache.fop.layoutmgr.AbstractBreaker.getNextBlockList(AbstractBreaker.java:752) at org.apache.fop.layoutmgr.PageBreaker.getNextBlockList(PageBreaker.java:180) at org.apache.fop.layoutmgr.PageBreaker.getNextBlockList(PageBreaker.java:160) at org.apache.fop.layoutmgr.AbstractBreaker.doLayout(AbstractBreaker.java:388) at org.apache.fop.layoutmgr.PageBreaker.doLayout(PageBreaker.java:114) at org.apache.fop.layoutmgr.PageSequenceLayoutManager.activateLayout(PageSequenceLayoutManager.java:138) at org.apache.fop.area.AreaTreeHandler.endPageSequence(AreaTreeHandler.java:267) at org.apache.fop.fo.pagination.PageSequence.endOfNode(PageSequence.java:130) at org.apache.fop.fo.FOTreeBuilder$MainFOHandler.endElement(FOTreeBuilder.java:360) at org.apache.fop.fo.FOTreeBuilder.endElement(FOTreeBuilder.java:190) at org.apache.xalan.transformer.TransformerIdentityImpl.endElement(TransformerIdentityImpl.java:1101) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:601) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1782) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2939) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205) at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522) at weblogic.xml.jaxp.WebLogicXMLReader.parse(WebLogicXMLReader.java:133) at weblogic.xml.jaxp.RegistryXMLReader.parse(RegistryXMLReader.java:173) at org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:484)

I have tried it with other font too. That worked well when I tested, but on the server I received NegativeArraySizeException.

I don't know what I am missing.

Any suggestions?


Solution

  • I solved it. The problem was, that the font was inside an ear and a war file. If the font is only on the server, it works fine.