使用的jar文件
xmlworker-5.5.11.jar
itextpdf-5.5.11.jar
下载地址:https://pan.baidu.com/s/1i5AIBvZ
以下为测试代码
package com.test; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import com.itextpdf.text.Document; import com.itextpdf.text.pdf.PdfWriter; import com.itextpdf.tool.xml.XMLWorkerHelper; public class Html2Pdf { public static void main(String [] args) throws Exception { String urlsource = getURLSource(new File("D:/test.html")); String cssSource = getURLSource(new File("D:/css.css")); htmlToPdf(urlsource,cssSource); } // 支持中文 public static void htmlToPdf(String htmlstr,String cssSource) throws Exception { String outputFile = "D:/test.pdf"; Document document = new Document(); PdfWriter writer = null; writer = PdfWriter.getInstance(document, new FileOutputStream(outputFile)); document.open(); InputStream bis = new ByteArrayInputStream(htmlstr.toString().getBytes());
InputStream cssis = new ByteArrayInputStream(cssSource.toString().getBytes());
XMLWorkerHelper.getInstance().parseXHtml(writer, document, bis,cssis);
document.close();
}
/**
* 通过网站域名URL获取该网站的源码
*
* @param url
* @return String
* @throws Exception
*/
public static String getURLSource(File url) throws Exception
{
InputStream inStream = new FileInputStream(url);
// 通过输入流获取html二进制数据
byte [] data = readInputStream(inStream); // 把二进制数据转化为byte字节数据
String htmlSource = new String(data);
inStream.close();
return htmlSource;
}
/**
* 把二进制流转化为byte字节数组
*
* @param instream
* @return byte[]
* @throws Exception
*/
public static byte [] readInputStream(InputStream instream) throws Exception
{
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
byte [] buffer = new byte[1204];
int len = 0;
while ((len = instream.read(buffer)) != -1)
{
outStream.write(buffer, 0, len);
}
instream.close();
return outStream.toByteArray();
}
}