You did not provide the most important details, namely the input FO and the output PDF. In any case, it is most likely that you are not specifying a font that contains the desired character. Try specifying
<fo:inline font-family="Arial Unicode MS">薔</fo:inline> Of course, you will need to make sure you have this font (arialuni.ttf) installed in ~/Library/Fonts or in /Library/Fonts/Microsoft. G. On Sat, Feb 19, 2011 at 12:01 AM, Markus Ruggiero <[email protected] > wrote: > Hi list, > > I have a problem with font encoding that I was not able to find a solution > in the list archive. This is MacOSX with Java SE6 and FOP 1.0. Please bear > with me as I am new to XSLT and FOP. > > The following character does not make it into to final PDF: → (Unicode > #8594). The input XML is generated correct, showing the correct char when > dumping to Eclipse console with System.out.println(myXML), encoding is > UTF-8, the XSL is correctly set to UTF-8. However the resulting PDF shows a > # instead of the desired character. Analysis of the PDF with Acrobat shows > that the text is encoded ANSI with font Helvetica. How can I specify UTF-8? > Helvetica does have the correct arrow char as pasting the XML file into > BBEdit set to UTF-8/Helvetica also shows the correct character. Capturing > the intermediate fo data and dumping it to Eclipse console also shows > everything as it should be. > > I use the following code to generate the resulting PDF byte[]. The code is > right from the examples section on > xmlgraphics.apache.org/fop/1.0/embedding. The data is then downloaded as > PDF to the browser. > > Thanks for any help > ---markus--- > > private byte[] xml2pdf(URL xslt, String xml ) { > ByteArrayOutputStream out = new ByteArrayOutputStream(); > > try { > // Setup input and output files > File xsltfile = new File(xslt.getPath()); > // configure fopFactory as desired > FopFactory fopFactory = FopFactory.newInstance(); > > FOUserAgent foUserAgent = fopFactory.newFOUserAgent(); > > // configure foUserAgent as desired > try { > // Construct fop with desired output format > Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, foUserAgent, out); > // Setup XSLT > TransformerFactory factory = TransformerFactory.newInstance(); > Transformer transformer = > factory.newTransformer(newStreamSource(xsltfile)); > // Set the value of a <param> in the stylesheet > transformer.setParameter("versionParam", "2.0"); > // Setup input for XSLT transformation > Source src = new StreamSource(new StringReader(xml)); > > // Resulting SAX events (the generated FO) must be piped through to > FOP > Result res = new SAXResult(fop.getDefaultHandler()); > // Start XSLT transformation and FOP processing > transformer.transform(src, res); > } > finally { > out.close(); > } > } > catch (Exception e) { > e.printStackTrace(System.err); > } > return out.toByteArray(); > } > > >
