java代码以下:css
/** * 使用在线编辑器生成PDF * @param htmlCode 编辑器内容 * @param pdfPath PDF文件保存路径 */ public static void html2Pdf(String htmlCode, String pdfPath) { try { String realPath = ServletActionContext.getRequest().getSession(). getServletContext().getRealPath(""); String fontPath = realPath + "\\resource\\font\\simsun.ttc"; String projectName = realPath.substring(realPath.lastIndexOf("\\") + 1); /** * 替换编辑器中上传图片的路径, 用于解决用户上传图片的相对路径问题 * 替换前:src="/xxx/resource/manual/ * 替换后:src="xxx/resource/manual/ */ String oldChar = "/" + projectName + "/resource/manual/"; String newChar = projectName + "/resource/manual/"; htmlCode = htmlCode.replace(oldChar, newChar); OutputStream os = new FileOutputStream(pdfPath); ITextRenderer renderer = new ITextRenderer(); StringBuffer html = new StringBuffer(); // DOCTYPE 必需写不然相似于这样的字符( )解析会出现错误 html.append("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">"); html.append("<html xmlns=\"http://www.w3.org/1999/xhtml\">") .append("<head>") .append("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />") .append("<style type=\"text/css\" >body {font-family: SimSun;}</style>") .append("</head>").append("<body>"); html.append(htmlCode); html.append("</body></html>"); renderer.setDocumentFromString(html.toString()); // 解决中文支持问题 ITextFontResolver fontResolver = renderer.getFontResolver(); fontResolver.addFont(fontPath, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); realPath = realPath.replace(projectName, ""); // 去掉项目名 realPath = realPath.replace("\\", "/"); // 解决图片的相对路径问题 ,图片路径必须以file开头 renderer.getSharedContext().setBaseURL("file:/" + realPath); renderer.layout(); renderer.createPDF(os); os.close(); } catch (Exception e) { e.printStackTrace(); } }