i have ttf font in fonts directory in jar application.
myapp.jar / fop / config.xml font.ttf i create fop way:
fopfactory fopfactory = fopfactory.newinstance(); fopfactory.setstrictvalidation(false); fopfactory.setuserconfig(getclasspathfile("/fop/config.xml")); fouseragent fouseragent = fopfactory.newfouseragent(); ... how configure config.xml embeddd font.ttf in pdf file rendering?
it seems post late, may it'll useful others. [java 8, fop 2.1]
import lombok.sneakythrows; ... @sneakythrows private fopfactory getfopfactory(){ inputstream fopconfigstream = thread.currentthread().getcontextclassloader().getresourceasstream("/fop/config.xml"); fopfactorybuilder builder = new fopfactorybuilder(new file(".").touri(), new custompathresolver()); fopfactory factory = builder.setconfiguration(new defaultconfigurationbuilder().build(fopconfigstream)).build(); fopconfigstream.close(); return factory; } ... private static final class custompathresolver implements resourceresolver { @override public outputstream getoutputstream(uri uri) throws ioexception { return thread.currentthread().getcontextclassloader().getresource(uri.tostring()).openconnection() .getoutputstream(); } @override public resource getresource(uri uri) throws ioexception { inputstream inputstream = classloader.getsystemresourceasstream("fop/" + filenameutils.getname(uri)); return new resource(inputstream); } } config.xml:
<fop version="1.0"> <renderers> <renderer mime="application/pdf"> <fonts> <font kerning="yes" embed-url="font.ttf" embedding-mode="subset"> <font-triplet name="font name" style="normal" weight="normal"/> </font> </fonts> </renderer> </renderers> </fop>
Comments
Post a Comment