如题
------解决方案--------------------
用IText啊
------解决方案--------------------
速度慢是因为访问w3c的网站吧
下面的代码还是比较快的
- Java code
import java.io.File;import java.io.FileOutputStream;import java.io.OutputStream;import org.xhtmlrenderer.pdf.ITextFontResolver;import org.xhtmlrenderer.pdf.ITextRenderer;import com.lowagie.text.pdf.BaseFont;public class TestFlyingSauser{ public static void main( String[] args ) throws Exception {// demo_1(); demo_2(); } // 不支持中文 public static void demo_1() throws Exception { String inputFile = "D:/Test/flying.html"; String url = new File( inputFile ).toURI().toURL().toString(); String outputFile = "D:/Test/flying.pdf"; OutputStream os = new FileOutputStream( outputFile ); ITextRenderer renderer = new ITextRenderer(); renderer.setDocument( url ); renderer.layout(); renderer.createPDF( os ); os.close(); } // 支持中文 public static void demo_2() throws Exception { String outputFile = "G:/demo_3.pdf"; OutputStream os = new FileOutputStream(outputFile); ITextRenderer renderer = new ITextRenderer(); ITextFontResolver fontResolver = renderer.getFontResolver(); fontResolver.addFont("C:/Windows/fonts/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); 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\" mce_bogus=\"1\">body {font-family: SimSun;}</style>") .append("</head>") .append("<body>"); html.append("<div>支持中文!</div>"); html.append("</body></html>"); renderer.setDocumentFromString(html.toString()); // 解决图片的相对路径问题 // renderer.getSharedContext().setBaseURL("file:/F:/teste/html/"); renderer.layout(); renderer.createPDF(os); os.close(); }}
------解决方案--------------------
上面我是瞎猜的,不过用上面的代码确实很快
------解决方案--------------------
转图片的就复杂一些了,我之前倒是做过
用htmlparser解析html,把里面的图片相对地址改成文件绝对地址,然后把所有的数据添加到pdf中就行了
------解决方案--------------------
能转那些很复杂的网页?
------解决方案--------------------
lz调试成功了吗?贴出代码参考学习学习。
------解决方案--------------------
我只想说,对于没有规则的html,想转化为pdf,基本没戏。
不要死缠了。
对于有规则的html,使用模板技术freemarket。
------解决方案--------------------
我还没见过开源的有这种东西,这些东西都是商业产品。