public static class MyFontsProvider extends XMLWorkerFontProvider {
public MyFontsProvider ( ) {
super ( null, null) ;
}
@Override
public Font getFont ( final String fontname, String encoding, float size, final int style) {
String fntname = fontname;
if ( fntname == null) {
fntname = "宋体" ;
}
if ( size == 0 ) {
size = 4 ;
}
return super . getFont ( fntname, encoding, size, style) ;
}
}
public void createPdf ( String destFile, Long gsId, String rootPath) {
String fileName = CalendarHelper. formatDate ( new Date ( ) , "yyyyMMddHHmmss" ) + ".pdf" ;
String pdfName = "upload" + File. separator + fileName;
String pdfPath = rootPath + File. separator + pdfName;
try {
Document document = new Document ( PageSize. A4, 10 , 10 , 10 , 10 ) ;
PdfWriter mPdfWriter = PdfWriter. getInstance ( document, new FileOutputStream ( pdfPath) ) ;
document. open ( ) ;
String contentHtml = "" ;
ByteArrayInputStream bin = new ByteArrayInputStream ( contentHtml. getBytes ( "UTF-8" ) ) ;
MyFontsProvider fontProvider = new MyFontsProvider ( ) ;
fontProvider. addFontSubstitute ( "lowagie" , "garamond" ) ;
fontProvider. setUseUnicode ( true ) ;
CssAppliers cssAppliers = new CssAppliersImpl ( fontProvider) ;
HtmlPipelineContext htmlContext = new HtmlPipelineContext ( cssAppliers) ;
htmlContext. setTagFactory ( Tags. getHtmlTagProcessorFactory ( ) ) ;
XMLWorkerHelper. getInstance ( ) . getDefaultCssResolver ( true ) ;
XMLWorkerHelper. getInstance ( ) . parseXHtml ( mPdfWriter, document, bin, null, Charset. forName ( "UTF-8" ) ,
fontProvider) ;
document. close ( ) ;
mPdfWriter. close ( ) ;
} catch ( Exception e) {
e. printStackTrace ( ) ;
}
}