Download font from JAR for FOP

I have a TTF font in the fonts directory in the JAR with my application.

  myapp.jar / fop / config.xml font.ttf 

I create my FOP as follows:

  FopFactory fopFactory = FopFactory.newInstance(); fopFactory.setStrictValidation(false); fopFactory.setUserConfig(getClasspathFile("/fop/config.xml")); FOUserAgent foUserAgent = fopFactory.newFOUserAgent(); ... 

How do I configure config.xml for embeddd font.ttf in a PDF file that I am rendering?

+4
source share
1 answer

It seems that my post is too late, but maybe it will be useful for 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> 
+4
source

Source: https://habr.com/ru/post/1492287/


All Articles