2010
09.08

Oracle Reports Server font issues

2 people like this post.
Share

Here’s a couple of hints you may find useful when shooting troubles around Oracle Reports Server.
It all starts when Customer wants to produce PDF reports using a custom font. Of course the font won’t be there when the file is opened on a client PC. The report server must either embed (include entirely) or subset (include just the actually used glyphs) the font into the PDF.

We’re running Oracle Application Server 10g Release 2 on Windows.

More than one Reports Server (RS from now on) can be run at the same time. Each RS is identified by name. Open a DOS window, change directory to the one where reports templates/resources are, then launch:

rwserver server=rstest

Test Oracle Reports Server is running

RS named “rstest” will get its own log directory and configuration file, under the Application Server “HOME”:

reports\conf\rstest.conf
reports\logs\rstest\
reports\logs\rstest\rwserver.log

Quite convenient: you’ll leave the production RS alone, be able to activate debug tracing, restart at will, …

Here’s how tu run a test report on the “rstest” RS:

rwclient SERVER=rstest REPORT=d01_skt_anag1.rdf userid=user/pwd@db DESFORMAT=pdf DESTYPE=file DESNAME=c:\temp\testoutput.pdf

Back to our issues. First step, I’d say, is to find out the exact name of the font we’d like to embed. Did you know you can convert Report Developer “source” files (.rdf) to XML, then peek in them? Use:

rwconverer STYPE=rdffile SOURCE=d01_skt_anag1.rdf DTYPE=xmlfile dest=c:\temp\rpt.xml

“Cooper Black” is the name:

C:\dev\appl\Reports>findstr /I face c:\temp\rpt.xml | findstr /I coop
            <font face="Cooper Black" size="14" bold="yes" textColor="red"/>
              <font face="Cooper Black" size="11" bold="yes" textColor="red"/>
            <font face="Cooper Black" size="12" bold="yes" textColor="red"/>

Install the font in Windows. Oddly, things didn’t seem to work for me when I just copied the .ttf file in the C:\WINDOWS\Fonts directory. I had to use the “Install New Font” menu item. I thought both methods were equivalent, maybe I was wrong, maybe I’m talking junk now.

TTF font install in Windows

Modify the uifont.ali file (tools\common), telling the Report Server to subset “Cooper Black” into the generated PDF files. Just add a line under the PDF:Subset section, equating the font name to the TTF file name, both enclosed in double quotes.

[ PDF:Subset ]
"Cooper Black" = "COOPBL.TTF"

The fnchk.exe program (ran without arguments) displays the full path of uifont.ali and tells if everything is fine or the file contains any syntax error.

Installing the font in Windows is not enough, you should also put it in one of the REPORTS_PATH directories. The value of this variable can be found in the registry, I chose: C:\Oracle\Products\FRHome\reports\templates. FileMon is essential when trying to see which files can’t be found by a process.

Time to restart the Reports Service, generate a PDF report and check if fonts are good (in Acrobat Reader: CTRL-D, “Fonts” tab). Ours is listed as “Embedded Subset”; we’re done.

Embedded Subset Font in PDF

See also: Oracle Support Note.350971.1 “Troubleshooting Guide for Font Aliasing / Font Subsetting / Font Embedding Issues”.

Share