WkHtmlToPdf使用记录

参考博文: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生成页码

https://blog.csdn.net/qq_34316431/article/details/118417476

猜你喜欢

转载自blog.csdn.net/qq_34316431/article/details/118143506