Re: fop 1.1 servlet ignores my custom TTF font

Umberto Rustichelli aka Ubi <[email protected]>
Newsgroups gmane.text.xml.fop.user
Message-ID <[email protected]>
Thanks Simon, moved the code, it works.

Turned out that I already tried that (see the "POS-ALPHA" comment), but 
apparently at the time I was messing up somewhere else.


On 12/05/2017 03:32 PM, Simon Steiner wrote:
>
> Hi,
>
> You have
>
> this.fopFactory.setUserConfig(userConfigFile);
>
> before
>
> this.fopFactory = FopFactory.newInstance();
>
> Thanks
>
> *From:*Umberto Rustichelli aka Ubi [mailto:[email protected]]
> *Sent:* 05 December 2017 14:18
> *To:* [email protected]
> *Subject:* fop 1.1 servlet ignores my custom TTF font
>
>
> Respectable, I've been trying many ways to solve this, following 
> online manuals, reading forum posts etc., but I miserably failed. I'm 
> no Java expert.
>
> Environment is Linux, Java is 1.6.07, fop is version 1.1
> To make sure I'm not stuck with some cache, everytime I have stopped 
> Tomcat, remover webapps/fop* and put the new fop.war into webapps/, 
> then re-run tomcat.
>
> I have some fonts that I must use in the PDF renderer (FO to PDF 
> transformation), let's say I just have one that is 
> /opt/fopTest/fonts/Ocrb.ttf
>
> After trying some recipes found on the web, like retouching fop.xconf 
> before compiling or where I just put the fop configuration file 
> somewhere... nada.
> Currently I have modified 
> src/java/org/apache/fop/servlet/FopServlet.java this way:
>
>     public void init() throws ServletException {
>
>             this.uriResolver = new 
> ServletContextURIResolver(getServletContext());
>             this.transFactory = TransformerFactory.newInstance();
> this.transFactory.setURIResolver(this.uriResolver);
>
>             // Ubi: here or in position POS-ALPHA,
>             // the effect seems to be the same (fonts not found!)
>             try
>             {
>                 File userConfigFile = new 
> File("/opt/fopTest/Ubi.fop-config.xml");
>                 this.fopFactory.setUserConfig(userConfigFile);
>             }
>             catch (Exception exc)
>             {
>                  // I don't see the point in catching this one, should I?
>             }
>
>             this.fopFactory = FopFactory.newInstance();
>             this.fopFactory.setURIResolver(this.uriResolver);
>
>             // POS-ALPHA
>
>             configureFopFactory();
>         }
>
>
> and /opt/fopTest/Ubi.fop-config.xml just contains
>
>
>     <?xml version="1.0"?>
>     <fop version="1.0">
>       <renderers>
>         <renderer mime="application/pdf">
>           <fonts>
>             <!-- Ubi: try this one... -->
> <directory>/opt/fopTest/fonts/Ocrb.ttf</directory>
>             <auto-detect/>
>             <!-- Ubi: (the previous was apprently insufficient for the 
> servlet)
>                     ....try this one, too. See 
> https://xmlgraphics.apache.org/fop/1.1/fonts.html#register -->
>             <font
>                             
> embed-url="file:///opt/fopTest/fonts/Ocrb.ttf" 
> <file:///opt/fopTest/fonts/Ocrb.ttf>
>                             encoding-mode="auto">
>                             <font-triplet name="OCRB" style="normal" 
> weight="normal" />
>             </font>
>           </fonts>
>         </renderer>
>       </renderers>
>     </fop>
>
>
> By running tomcat with strace, I see that file 
> /opt/fopTest/Ubi.fop-config.xml is actually read, but the font OCRB is 
> not found when invoked (logs/catalina.out):
>
>     WARNING: Font "OCRB,normal,400" not found. Substituting with 
> "any,normal,400"
>
>
> On the command line, this one works, instead :
>
> java -cp build/fop.jar:lib/xmlgraphics-commons-1.5.jar:<the usual 
> lib/*.jar files> \
>         org.apache.fop.tools.fontlist.FontListMain \
>         -c /etc/PeS/var/FOP/Ubi.fop-config.xml \
>         /tmp/test2.pdf
>
> and the OCRB font appears in the PDF.
>
> So, what am I doing wrong with the servlet???
> Is there a bullet-proof way to exploit fonts, possibly with the 
> standard fop servlet (without writing code)?
> Otherwise, how can I quickly debug/inspect the issue?
>
> Thanks a lot
>
>    Ubi
>
>
> -- 
> Questo messaggio e' stato analizzato con Libra ESVA ed e' risultato 
> non infetto.
> Clicca qui per segnalarlo come spam. 
> <https://esva.gt50.org/cgi-bin/learn-msg.cgi?id=BE6AC400C3.AED19>
> Clicca qui per metterlo in blacklist 
> <https://esva.gt50.org/cgi-bin/learn-msg.cgi?blacklist=1&id=BE6AC400C3.AED19>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.