I hope you don't mind my CCing batik-users so other users can profit,
too.

I've put together an example that works for me and added it to the FOP
Wiki:

http://wiki.apache.org/xmlgraphics-fop/SvgNotes/PdfTranscoderTrueTypeEmbedding

I used the current CVS HEAD code and the batik.jar that is currently in
the lib directory when you download FOP from CVS. �t will most probably
work with the latest Batik from CVS, too.

I hope this helps.

On 07.01.2005 23:46:34 zxn 6228 wrote:
> Hi, Jeremias,
> 
> I saw your your reply to batik-user on Wed, 22 Sep 2004, see below.
> 
> I downloaded the  batik 1-4-05 from CVS, generated the font metric xml file 
> using TTFReader, and created the user config file.
> 
> But the font still can't be embedded into the PDF, the font is installed in 
> winnt/fonts dir.
> 
> Would you please tell me why and which version of batik you tested?
> 
> Thanks,
> 
> Zhongli Ni
> 
> -------------------------------------------------------------------------------------------------
> You can do that, but it's not exactly like the userconfig.xml thing of
> FOP 0.20.5. The PDF Transcoder can be configured using Apache Avalon
> style configuration. As the whole PDF Transcoder is still somewhat
> work-in-progress this hasn't been documented, yet (and the whole thing
> may yet change). Here's some code snippet out of my test harness that
> should help you configure the Transcoder (Java knowledge required):
> 
> //Avalon
> import org.apache.avalon.framework.ExceptionUtil;
> import org.apache.avalon.framework.configuration.Configuration;
> import 
> org.apache.avalon.framework.configuration.DefaultConfigurationBuilder;
> import org.apache.avalon.framework.container.ContainerUtil;
> import org.apache.avalon.framework.logger.ConsoleLogger;
> 
> import org.apache.commons.logging.Log;
> import org.apache.commons.logging.impl.SimpleLog;
> import org.apache.fop.svg.AbstractFOPTranscoder;
> import org.apache.fop.svg.PDFTranscoder;
> import org.apache.xml.resolver.tools.CatalogResolver;
> 
>         [..]
> 
>         Transcoder transcoder;
>         transcoder = new org.apache.fop.svg.PDFTranscoder();
> 
>         //This part is for newer code with Jakarta Commons Logging
>         if (transcoder instanceof AbstractFOPTranscoder) {
>             Log logger = new SimpleLog("FOP/Transcoder");
>             ((SimpleLog) logger).setLevel(SimpleLog.LOG_LEVEL_TRACE);
>             ((AbstractFOPTranscoder)transcoder).setLogger(logger);
>         }
> 
>         //This part uses older Avalon-style logging
>         ContainerUtil.enableLogging(transcoder, new 
> ConsoleLogger(ConsoleLogger.LEVEL_DEBUG));
> 
>         try {
>             DefaultConfigurationBuilder cfgBuilder = new 
> DefaultConfigurationBuilder();
>             Configuration cfg = cfgBuilder.buildFromFile(new 
> File("src/xml/pdf-renderer-cfg.xml"));
>             ContainerUtil.configure(transcoder, cfg);
>         } catch (Exception e) {
>             throw new TranscoderException(e);
>         }
> 
>         transcoder.addTranscodingHint(.......
> 
>         if (transcoder instanceof AbstractFOPTranscoder) {
>             ((AbstractFOPTranscoder)transcoder).setEntityResolver(resolver);
>         }
> 
>         [..] //Set up input and output
> 
>         transcoder.transcode(input, output);
> 
> If either of the two logging parts doesn't compile just comment them.
> 
> The XML file to use would look approximately like this:
> <cfg>
>   <filterList>
>     <value>null</value>
>   </filterList>
>   <filterList type="image">
>     <value>flate</value>
>     <value>ascii-85</value>
>   </filterList>
>   <!--filterList type="jpeg">
>     <value>ascii-85</value>
>   </filterList-->
>   <fonts>
>     <font metrics-url="file:C:/Dev/FOP/fonts/BauerBodoni-Roman.xml"
>          kerning="no"
>          embed-url="file:C:/Dev/FOP/fonts/BauerBodoni-Roman.pfb">
>       <font-triplet name="BauerBodoni" style="normal" weight="normal"/>
>     </font>
>   </fonts>
> </cfg>
> 
> You can leave the filterList stuff aside.
> 
> I can't tell what version of PDF transcoder you are using, so it may be
> that the above XML structure may not work. We haven't had a proper
> release of the PDF transcoder, yet, so this is all trial and error. At
> any rate, the above works with the latest CVS code on my machine. If it
> doesn't work, try removing the enclosing "fonts" element, but keeping
> the "font" elements. You will recognize a similarity with the old FOP
> 0.20.5 config format, but behind all this the configuration system has
> changed quite a bit.
> 
> You will also have to make sure that the font you are trying to embed is
> installed on your operating system, because Batik makes use of AWT fonts
> which in turn are taken from the operating system. When the PDF
> transcoder has to render a particularly complex text element the text
> will not be rendered using PDF text operators but using shapes in which
> case the fonts come from the AWT subsystem not from FOP's own font
> subsystem.



Jeremias Maerki


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to