private static String getWEB_INF(){
if(PdfUtl== null ){
PdfUtl =new PdfUtl();
}
if(PdfUtl.getClass().getClassLoader().getResource("/")==null){
WEB_INF="E:\\";
}else{
WEB_INF=PdfUtl.getClass().getClassLoader().getResource("/").getPath();
}
return WEB_INF;
}
public static File createPdf(File outFile, String html) {
// System.out.println(html);
OutputStream fos = null;
try {
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
ByteArrayInputStream bais = new ByteArrayInputStream(html.getBytes("UTF-8"));
Document doc = builder.parse(bais);
ITextRenderer renderer = new ITextRenderer();
ITextFontResolver fontResolver = renderer.getFontResolver();
fontResolver.addFont(getWEB_INF() + "charts/simfang.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
fontResolver.addFont(getWEB_INF() + "charts/simkai.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
fontResolver.addFont(getWEB_INF() + "charts/simsun.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
fontResolver.addFont(getWEB_INF() + "charts/simfang_GB2312.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
fontResolver.addFont(getWEB_INF() + "charts/KaiTi_GB2312.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
fontResolver.addFont(getWEB_INF() + "charts/msyhbd.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
renderer.setDocument(doc, null);
fos = new FileOutputStream(outFile);
renderer.layout();
renderer.createPDF(fos);
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
try {
if (fos != null) {
fos.flush();
fos.close();
}
return outFile;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
}
public static 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(getWEB_INF() + "\\charts\\simfang.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
//解决图片的相对路径问题
renderer.getSharedContext().setBaseURL("file:/D:/");
renderer.layout();
renderer.createPDF(os);
os.flush();
os.close();
return true;
}
public static void addPdfMark(File InPdfFile, File outPdfFile, byte [] imgBytes ){
try {
PdfReader reader = new PdfReader(new FileInputStream(InPdfFile));
PdfStamper stamp = new PdfStamper(reader, new FileOutputStream(outPdfFile));
Image img =Image.getInstance(imgBytes);
img.setAbsolutePosition(160, 70);//添加图片尺寸
PdfContentByte under = stamp.getUnderContent(1);
under.addImage(img);
stamp.close();// 关闭
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) throws IOException {
String html="<html lang='en'><head><meta charset='UTF-8'/><title>Document</title></head><body style='font-family:SimSun;font-size:14px'>很久都不曾写过文章了,上一篇文章还是四个月之前的。以此去命题,并非有什么轻生的念头,只是有感而发,勿念。其实我很想做个自私的人,因为这会很久都不曾写过文章了,上一篇文章还是四个月之前的。以此去命题,并非有什么轻生的念头,只是有感而发,勿念。其实我很想做个自私的人,因为这会让你吃尽苦头又吃足了甜头。而你却依然活的天真活的开心——序。</body></html>";
File outFile = File.createTempFile("1234", ".pdf");
PdfUtl.createPdf(outFile,html);
System.out.println(outFile.getPath());
}
}