itext2.0.8把html转换为pdf及解决中文不显示办法

对html文件格式要求比较严格,请遵循以下格式:

  
  
  
    
  

  
  
  

注:

为了解决中文问题,请在body中加入样式 font-family: SimSun; 同时,对应JAVA代码中文处理类如下:

/**
 * 
 * @ClassName: Html2Pdf
 * @Description: Html文件转换为(这里用一句话描述这个类的作用)
 * @author lxz
 * @date 2016-4-18 下午4:08:41
 * 
 */
public class Html2PdfUtil {

	public synchronized static boolean html2Pdf(String inputFile, String outputFile) {

		OutputStream os = null;
		File htmlFile = new File(inputFile);
		try {
			os = new FileOutputStream(outputFile);

			ITextRenderer renderer = new ITextRenderer();
			String url = null;
			try {
				url = htmlFile.toURI().toURL().toString();
			} catch (MalformedURLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			renderer.setDocument(url);
			// 解决中文支持问题
			ITextFontResolver fontResolver = renderer.getFontResolver();
			try {
				fontResolver.addFont("c://windows//fonts//simsun.ttc,1",BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
			} catch (DocumentException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

			// 解决图片的相对路径问题
			renderer.getSharedContext().setBaseURL("file:/" + basePath + "/print");
			renderer.layout();
			try {
				renderer.createPDF(os);
			} catch (DocumentException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				return false;
			}
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				os.flush();
				os.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
                //删除原html文件
		htmlFile.delete();
		return true;
	}
}

其中 " c://windows//fonts//simsun.ttc,1使用Windows系统字体,和html页面中font-family: SimSun; 对应。

你可能感兴趣的:(文件格式转换)