参考博文:wkhtmltopdf把网页转换为pdf的经验总结_千里之行,始于足下-CSDN博客
个人经验多个pdf合成一个pdf可以通过jsp访问多个合成pdf接口然后合成 例:
或者是直接请求多个页面合成 例:
WkHtmlToPdf工具类
package org.deyi.sc.util;
import java.io.*;
import java.util.Date;
/**
* @author dfd
* @date 2017/2/13
*/
public class WkHtmlToPdf extends Thread {
private final InputStream is;
public WkHtmlToPdf(InputStream is) {
this.is = is;
}
//wkhtmltopdf 在系统中的路径
private static final String TO_PDF_TOOL = "D:\\develop\\wkhtmltopdf\\bin\\wkhtmltopdf.exe";
public static void main(String[] args) {
Date date = new Date();
String fileName = String.valueOf(date.getTime()) + ".pdf";
convert("www.baidu.com");
}
/**
* html转pdf
*
* @param srcPath html路径,可以是硬盘上的路径,也可以是网络路径
* @return 转换成功返回true
*/
public static boolean convert(String srcPath) {
StringBuilder cmd = new StringBuilder();
//html路径 即目标网页路径
cmd.append(" ");
cmd.append(srcPath);
cmd.append(" ");
boolean result = true;
Log.debug(cmd.toString());
try {
Process proc = Runtime.getRuntime().exec(cmd.toString());
WkHtmlToPdf error = new WkHtmlToPdf(proc.getErrorStream());
WkHtmlToPdf output = new WkHtmlToPdf(proc.getInputStream());
error.start();
output.start();
proc.waitFor();
} catch (Exception e) {
result = false;
e.printStackTrace();
}
return result;
}
/**
* 标准格式
*
* @return
*/
public static StringBuilder getFormal() {
StringBuilder cmd = new StringBuilder();
//wkhtmltopdf 在系统中的路径
cmd.append(TO_PDF_TOOL);
cmd.append(" ");
cmd.append(" --header-line");//页眉下面的线
// cmd.append(" --footer-line");//页脚上面的线
cmd.append(" --footer-center [page]/[topage]"); //在页脚中心放置页码
// cmd.append(" --header-right 这里是我们系统的页眉"); //页眉中间放置文字
// cmd.append(" --header-html http://localhost:8090/myheader.html"); //页眉中间放置图片
cmd.append(" --header-spacing 5 ");// (设置页眉和内容的距离,默认0 )
cmd.append(" --margin-top 20mm "); //设置页面上边距 (default 10mm)
// cmd.append(" cover http://localhost:8090/firstPage.html ");
return cmd;
}
@Override
public void run() {
try {
InputStreamReader isr = new InputStreamReader(is, "utf-8");
BufferedReader br = new BufferedReader(isr);
String line = null;
while ((line = br.readLine()) != null) {
System.out.print(line.toString()); //输出内容
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
配合pdfbox生成页码