2012-06-22 2 views
0

Как мы можем установить шрифт jasperreport, когда он экспортируется в .pdf в Java-приложении.Как установить шрифт jasperreport при экспорте jasperreport в .pdf

+0

Он должен быть установлен в самом отчете. Вы хотите изменить шрифт во время выполнения? – Thihara

+0

yes Мне нужно установить шрифт во время выполнения. – Harsha

ответ

1

Мне нужно экспортировать кириллические шрифты в jasperreport fo для генерации pdf. Шрифты должны быть включены в банку. В jasperreport v5.6.1 я разрешаю это так:
Поместите файл «ttf» в «пакет по умолчанию».
Помещенное jasperreport_extension.properties в "пакет по умолчанию":
net.sf.jasperreports.extension.registry.factory.ytrpaymentorderpdffonts = testpdf.YtrJasperFontExtensionFactory
Put мина класс "YtrJasperFontExtensionFactory" для расширения шрифта в пакет "testpdf":

package testpdf; 

import java.util.ArrayList; 
import java.util.Collections; 
import java.util.List; 
import net.sf.jasperreports.engine.DefaultJasperReportsContext; 

import net.sf.jasperreports.engine.JRPropertiesMap; 
import net.sf.jasperreports.engine.fonts.FontFamily; 
import net.sf.jasperreports.engine.fonts.SimpleFontFace; 
import net.sf.jasperreports.engine.fonts.SimpleFontFamily; 
import net.sf.jasperreports.extensions.ExtensionsRegistry; 
import net.sf.jasperreports.extensions.ExtensionsRegistryFactory; 



public class YtrJasperFontExtensionFactory implements ExtensionsRegistryFactory, ExtensionsRegistry { 
    private List <FontFamily> families; 

    @Override 
    public ExtensionsRegistry createRegistry(String string, JRPropertiesMap jrpm) { 
     return new YtrJasperFontExtensionFactory(); 
    } 

    @Override 
    public List getExtensions(Class type) { 
     if (type.equals(FontFamily.class)) { 
      if (families == null) { 
       families = new ArrayList<FontFamily>(); 
       loadFonts(); 
      } 
      return new ArrayList<FontFamily>(families); 
     } else { 
      return Collections.emptyList(); 
     } 
    } 

    private void loadFonts() {     
      DefaultJasperReportsContext dJRC = DefaultJasperReportsContext.getInstance(); 

       SimpleFontFamily family = new SimpleFontFamily(); 
       family.setName("Times New Roman"); 
       family.setPdfEmbedded(true); 

       SimpleFontFace sffNormal = new SimpleFontFace(dJRC); 
       sffNormal.setTtf("Times_New_Roman.ttf"); 
       family.setNormalFace(sffNormal); 

       family.setPdfEncoding("Cp1251"); 
       families.add(family); 
    } 
} 

И шрифты загружаются из потока (банки) сейчас.

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