当前位置: 代码迷 >> J2EE >> 哪位大侠会用java实现html转pdf啊用,多谢啊
  详细解决方案

哪位大侠会用java实现html转pdf啊用,多谢啊

热度:763   发布时间:2016-04-22 03:45:16.0
哪位大侠会用java实现html转pdf啊?急用,谢谢啊!
如题

------解决方案--------------------
用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。
------解决方案--------------------
我还没见过开源的有这种东西,这些东西都是商业产品。
  相关解决方案