欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

使用wkhtmltopdf 完成html转PDF,确保选择与你的系统架

来源: javaer 分享于  点击 15103 次 点评:279

使用wkhtmltopdf 完成html转PDF,确保选择与你的系统架


一、搭建所需环境

  1. 下载wkhtmltoimage
    首先,你需要从wkhtmltopdf的官方网站(
    https://wkhtmltopdf.org/downloads.html
    )下载wkhtmltoimage的Windows版本。确保选择与你的系统架构(32位或64位)相匹配的版本。
  2. 解压下载的文件
    下载完成后,解压下载的文件到一个你喜欢的目录,例如C:\wkhtmltoimage。
  3. 配置环境变量
    为了让系统能够识别wkhtmltoimage的路径,你需要将其添加到系统的环境变量中。具体操作如下:

​ 右键点击“此电脑”或“我的电脑”,选择“属性”。

​ 点击“高级系统设置”。

​ 在“系统属性”窗口中,点击“环境变量”按钮。

​ 在“系统变量”区域,找到名为Path的变量并选择它,然后点击“编辑”。

​ 在打开的窗口中,点击“新建”,然后添加wkhtmltoimage的安装路径,例如D:\safeware\wkhtmltopdf\bin。

​ 点击“确定”保存更改。

  1. 验证安装
    打开命令提示符(cmd)并输入以下命令来验证wkhtmltoimage是否正确安装并可以正常运行:
wkhtmltoimage --version

二、编写工具类

以下在已在window环境验证

package com.aspire.sxcrec.util;

import java.io.BufferedReader;
import java.io.InputStreamReader;

import java.io.IOException;

public class HtmlToPdfConverter {

    private static String wkhtmltopdfPath = "D:\\safeware\\wkhtmltopdf\\bin\\wkhtmltopdf.exe"; // Windows
    // 或
//    String wkhtmltopdfPath = "/usr/local/bin/wkhtmltopdf"; // Linux/Mac

    public static void main(String[] args) {
        String htmlFilePath = "E:\\Desktop\\export12.html"; // 输入HTML文件路径
        String outputPdfPath = "E:\\Desktop\\output.pdf"; // 输出PDF路径

        try {
            // 构建命令
            ProcessBuilder processBuilder = new ProcessBuilder(
                    wkhtmltopdfPath,
                    htmlFilePath,
                    outputPdfPath
            );

            // 启动进程
            Process process = processBuilder.start();

            // 捕获错误流(wkhtmltopdf 通常将日志输出到错误流)
            BufferedReader errorReader = new BufferedReader(
                    new InputStreamReader(process.getErrorStream())
            );
            String line;
            while ((line = errorReader.readLine()) != null) {
                System.err.println(line); // 打印错误信息
            }

            // 等待命令执行完成
            int exitCode = process.waitFor();
            if (exitCode == 0) {
                System.out.println("PDF 生成成功!");
            } else {
                System.out.println("PDF 生成失败,错误码: " + exitCode);
            }

        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}
相关栏目:

用户点评