html 转 pdf


private static String getWEB_INF(){
		if(PdfUtl== null ){
			PdfUtl =new PdfUtl();
		}
		if(PdfUtl.getClass().getClassLoader().getResource("/")==null){ 
			WEB_INF="E:\\";
		}else{
			WEB_INF=PdfUtl.getClass().getClassLoader().getResource("/").getPath();
		}
		return WEB_INF;
	}
	
	public static File createPdf(File outFile, String html) {
		
//		System.out.println(html);
		OutputStream fos = null;
		try {

			DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
			ByteArrayInputStream bais = new ByteArrayInputStream(html.getBytes("UTF-8"));
			Document doc = builder.parse(bais); 
			ITextRenderer renderer = new ITextRenderer();
			
			ITextFontResolver fontResolver = renderer.getFontResolver(); 
			fontResolver.addFont(getWEB_INF() + "charts/simfang.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
			fontResolver.addFont(getWEB_INF() + "charts/simkai.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
			fontResolver.addFont(getWEB_INF() + "charts/simsun.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
			fontResolver.addFont(getWEB_INF() + "charts/simfang_GB2312.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
			fontResolver.addFont(getWEB_INF() + "charts/KaiTi_GB2312.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
			fontResolver.addFont(getWEB_INF() + "charts/msyhbd.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
			renderer.setDocument(doc, null);
			fos = new FileOutputStream(outFile);
			renderer.layout();
			renderer.createPDF(fos);
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		} finally {
			try {
				if (fos != null) {
					fos.flush();
					fos.close(); 
				}
				return outFile;
			} catch (IOException e) {
				e.printStackTrace();
				return null;
			}
		}
	}
	public static boolean convertHtmlToPdf(String inputFile, String outputFile)
	throws Exception {
		
        OutputStream os = new FileOutputStream(outputFile);     
        ITextRenderer renderer = new ITextRenderer();     
        String url = new File(inputFile).toURI().toURL().toString(); 
       
        renderer.setDocument(url);   
        // 解决中文支持问题     
        ITextFontResolver fontResolver = renderer.getFontResolver();    
        fontResolver.addFont(getWEB_INF() + "\\charts\\simfang.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
        //解决图片的相对路径问题
        renderer.getSharedContext().setBaseURL("file:/D:/");
        renderer.layout();    
        renderer.createPDF(os);  
        
        os.flush();
        os.close();
		return true;
	}
	
	
	public static void addPdfMark(File InPdfFile, File outPdfFile, byte [] imgBytes ){
		try {
			PdfReader reader = new PdfReader(new FileInputStream(InPdfFile));
			PdfStamper stamp = new PdfStamper(reader, new FileOutputStream(outPdfFile));
			Image img =Image.getInstance(imgBytes);
			img.setAbsolutePosition(160, 70);//添加图片尺寸
			PdfContentByte under = stamp.getUnderContent(1);
			under.addImage(img); 
			stamp.close();// 关闭
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (DocumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}  
	}
	public static void main(String[] args) throws IOException {
			String  html="<html lang='en'><head><meta charset='UTF-8'/><title>Document</title></head><body style='font-family:SimSun;font-size:14px'>很久都不曾写过文章了,上一篇文章还是四个月之前的。以此去命题,并非有什么轻生的念头,只是有感而发,勿念。其实我很想做个自私的人,因为这会很久都不曾写过文章了,上一篇文章还是四个月之前的。以此去命题,并非有什么轻生的念头,只是有感而发,勿念。其实我很想做个自私的人,因为这会让你吃尽苦头又吃足了甜头。而你却依然活的天真活的开心——序。</body></html>";
			File outFile = File.createTempFile("1234", ".pdf");
			 PdfUtl.createPdf(outFile,html);
		    System.out.println(outFile.getPath());
	}
}

猜你喜欢

转载自blog.csdn.net/zhangdongnihao/article/details/80795196