2010-05-05 24 views
2

J'utilise org.xhtmlrenderer.pdf.ITextRenderer pour convertir ma page (x) html en pdf en utilisant Java. J'ai la plupart du temps fonctionné, excepté la partie de police.xhtmlrenderer xhtml au pdf problème de police

J'utilise verdana dans ma page et le pdf est rendu en utilisant la police par défaut.

J'ai ajouté le verdana.ttf à mon pot et utiliser le code suivant:

DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); 
Document doc = builder.parse(new StringBufferInputStream(html));  

File tmpFontFile = new File(TEMP_FOLDER + "/verdana.ttf"); 
     if(!tmpFontFile.exists()) 
     { 
     tmpFontFile.createNewFile(); 

     InputStream fontIs = getClass().getResourceAsStream("/com/mycompany/util/font/verdana.ttf"); 
     OutputStream fontOs = new FileOutputStream(tmpFontFile); 

     byte buf[] = new byte[1024]; 
     int len; 

     while((len = fontIs.read(buf)) > 0) 
     fontOs.write(buf,0,len); 

     fontOs.close(); 
     fontIs.close(); 
     } 


     ITextRenderer renderer = new ITextRenderer(); 
     renderer.getFontResolver().addFont(
     tmpFontFile.getAbsolutePath(), BaseFont.IDENTITY_H ,BaseFont.EMBEDDED); 
     renderer.setDocument(doc, null); 

     String outputFile = TEMP_FOLDER + "/mypdf.pdf"; 
     OutputStream os = new FileOutputStream(outputFile); 
     renderer.layout(); 
     renderer.createPDF(os); 
     os.close(); 

Qu'est-ce que je manque ici?

Merci, Bart

Répondre

2

Pour xhtmlrenderer au travail, le CSS doit lire:

font-family: Verdana;

au lieu de

font-family:verdana;

Il est sensible à la casse.

+3

vous dites 'font: family' mais je pense que vous voulez dire 'font-family', non? – pstanton

+0

police: le type ne fonctionnera pas pourrait B.T. avait utilisé font-family pour cela :) –