2013-03-04 2 views
1

Я использую html для создания PDF-документа, так как его запись EMR я должен использовать шрифты Monospaced.iText моноширинные шрифты в html-представлении выделены полужирным, курсивом от css-стиля

PDF создается сгенерированным штрафом, но стиль css для полужирного и курсивного игнорируется, так как я использую одиночный файл .otf для шрифта, поэтому не выделен полужирным шрифтом и курсивом.

Мне было интересно, как включить то же самое. Ниже приведены фрагменты кода.

Font Factory:

public static class MyFontFactory implements FontProvider,Serializable { 
     public Font getFont(String fontname, 
       String encoding, boolean embedded, float size, 
       int style, BaseColor color) { 
       BaseFont bf3 = null; 
      try { 
       bf3 = BaseFont.createFont("Inconsolata.otf",BaseFont.CP1252, BaseFont.EMBEDDED); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

      return new Font(bf3, 6); 
     } 

     public boolean isRegistered(String fontname) { 
      return false; 
     } 
    } 

PDF Генерация кода:

public void createPdf(Object object) throws Exception, DocumentException{ 
     // step 1 
     Document document = new Document(); 
     // step 2 
     PdfWriter.getInstance(document, new FileOutputStream(new File("test.pdf"))); 
     // step 3 
     document.open(); 
     // create extra properties 
     HashMap<String,Object> map = new HashMap<String, Object>(); 
     map.put(HTMLWorker.FONT_PROVIDER, new MyFontFactory()); 
     // step 4 
     String snippet; 
     // create the snippet 
     snippet = createHtmlSnippet(object); 
     Map<Object,Object> model = new HashMap<Object,Object>(); 
     model.put("object", object); 

     StyleSheet css = new StyleSheet(); 
     Map<String, String> stylemap = new HashMap<String, String>(); 
     stylemap.put("font-style", "italic"); 
     stylemap.put("font-size", "small"); 
     stylemap.put("font-weight", "bold"); 
     css.loadStyle("header",(HashMap<String, String>) stylemap); 
     css.loadStyle("strongClass", "text-decoration", "underline"); 
     List<Element> objects = HTMLWorker.parseToList(new StringReader(snippet), css, map); 

     for (Element element : objects) 
       document.add(element); 
     // step 5 
     document.close(); 
    } 

В приведенном выше коде CSS поставки не производит никакого эффекта на выходе , как я уже упоминал в связи с заданный один шрифт, если я хочу иметь жирный шрифт и курсив, как это можно достичь?

Действительно ценно, если кто-либо предоставляет указатели или помощь относительно того же.

Спасибо.

Примечание: Если я удалю моноширинные шрифты, применяется css.

ответ

1

Вы вводите в заблуждение семейство шрифтов с шрифтом.

Inconsolata это семейство шрифтов, состоящий из различных шрифтов:

  • Inconsolata регулярно, как это определено в inconsolata.ttf
  • Inconsolata смелой, как это определено в Inconsolata-Bold.ttf

См http://code.google.com/p/googlefontdirectory/source/browse/ofl/inconsolata/

Я не знал ни одного жирного, курсивного или полужирного текста, потому что предположил "there is no bold or italic for Inconsolata." И если там не является программой для шрифтов для других стилей, вы не должны ожидать, что iText поддержит эти стили (*).

Тогда я нашел хранилище с TTF для жирного шрифта: http://code.google.com/p/googlefontdirectory/source/browse/ofl/inconsolata/

StackOverflow Ищет Я прочитал вопрос о Inconsolata Italic in MacVim на StackOverflow; к сожалению, эти шрифты не могут использоваться в iText.

(*) Если шрифт не поддерживает жирный или курсив, iText может имитировать эти стили, изменяя режим рендеринга и/или перекос. Однако вы получите лучшие результаты, выбрав другой моноширинный шрифт.

+0

спасибо за ответ, он должен помочь мне, чтобы все было в порядке –

Смежные вопросы