????????????????????????PDF????????????????費(fèi)??????????????IText?????????????????????У?Itext????????First Choice???????λ???????????????PDF???????д??Velocity????FreeMarker?????????HTML????????????Itext?????е????????????????????????????д????HTML??????????дFreeMarker???????????????????Ρ?
???????????????д????HTML??棬????????????????????????????????????????HTML+CSS??PDF?????????????flying-saucer????????????Χ?С?
????http://code.google.com/p/flying-saucer/
???????????????????????й???GoogleCode???棬?????????????????????????
????Flying Saucer takes XML or XHTML and applies CSS 2.1-compliant stylesheets to it?? in order to render to PDF (via iText)?? images?? and on-screen using Swing or SWT??
????????????????????????XML????XHTML???????css????????????Swing????SWT?????????PDF???????????????????????IText????????????????????????CSS?к??????????????????????????Flying Saucer?????????

public 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("C:/Windows/Fonts/SIMSUN.TTC"?? BaseFont.IDENTITY_H?? BaseFont.NOT_EMBEDDED);
//??????????·??????
renderer.getSharedContext().setBaseURL("file:/D:/");
renderer.layout();
renderer.createPDF(os);
os.flush();
os.close();
return true;
}
??????????δ???????????????????HTML???URL = inputFile??????????????????????????????PDF????????????PDF??
???????????
????1.?????HTML????????????XHTML??檔??????????????????????
????<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
????<html xmlns="http://www.w3.org/1999/xhtml">
????????HTML???????????????????????б?????????????????flying-Saucer????XML??????????????????????????????????????????
????2.??????????д???·????????????磺
????<img src="a.jpg" alt="323" width="252" height="80" />
????????????λ?????????Java???????????
????renderer.getSharedContext().setBaseURL("file:/D:/");
??????????????????????<img>?????д·????
????3.Flying-Saucer?????tiff???????????????????????????????????????????????
????4.??????????????????????????????HTML?????е??????д??????????css???????????????????????Java??????д?????????λ?á?
????ITextFontResolver fontResolver = renderer.getFontResolver();
????fontResolver.addFont("C:/Windows/Fonts/SIMSUN.TTC"?? BaseFont.IDENTITY_H?? BaseFont.NOT_EMBEDDED);
??????????????????????塣???????????????塣
??????????????????