¿Cómo crear un PDF con iText + XMLWorker desde un servlet usando una fuente personalizada?

Jugar con muestras de iText / XMLWorker (principalmenteéste), Podría escribir fácilmente aplicaciones simples capaces de crear archivos PDF a partir de código HTML usando mis propias fuentes adicionales, pero tan pronto como intenté usar mis cosas en algún código de servicio web, terminé con excepciones como:

Table 'name' does not exist in file:/C:/work/MyServer/target/classes/fonts/My%20Font.ttf
ExceptionConverter: com.itextpdf.text.DocumentException: Table 'name' does not exist in file:/C:/work/MyServer/target/classes/fonts/My%20Font.ttf

... lo que parece indicar que en un contexto de servicio web, el archivo de fuente no se pudo cargar como se esperaba. Aquí está la mayor parte de mi código:

public HtmlRenderer(final String css, final String[] fontPaths) {
    // fontPaths = {
    // "/fonts/My Font.ttf",
    // "/fonts/My Other Font.ttf",
    // ...
    // };

    // CSS
    cssResolver = new StyleAttrCSSResolver();
    if (css != null) {
        final CssFile cssFile = XMLWorkerHelper.getCSS(new ByteArrayInputStream(css.getBytes()));
        cssResolver.addCss(cssFile);
    }

    // HTML
    XMLWorkerFontProvider fontProvider = new XMLWorkerFontProvider(XMLWorkerFontProvider.DONTLOOKFORFONTS);
    if (fontPaths != null) {
        for (final String fontPath : fontPaths) {
            final String path = this.getClass().getResource(fontPath).toExternalForm();
            fontProvider.register(path);
        }
    }
    CssAppliers cssAppliers = new CssAppliersImpl(fontProvider);
    htmlContext = new HtmlPipelineContext(cssAppliers);
    htmlContext.setTagFactory(Tags.getHtmlTagProcessorFactory());
    ...

¿Debo confiar en cosas como:

Extraer fuentes de recursos en archivos temporales (cf.aquí)Luego, precargue las fuentes en una fábrica de fuentes personalizada (cf.ahí)

¡Gracias por la ayuda!

Respuestas a la pregunta(1)

Su respuesta a la pregunta