日期:2014-05-20 浏览次数:21038 次
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。
------解决方案--------------------
我还没见过开源的有这种东西,这些东西都是商业产品。