找回密码
 立即注册
首页 业界区 业界 使用wkhtmltopdf 完成html转PDF

使用wkhtmltopdf 完成html转PDF

郦湘云 前天 09:54
一、搭建所需环境


  • 下载wkhtmltoimage
    首先,你需要从wkhtmltopdf的官方网站(
    https://wkhtmltopdf.org/downloads.html
    )下载wkhtmltoimage的Windows版本。确保选择与你的系统架构(32位或64位)相匹配的版本。
  • 解压下载的文件
    下载完成后,解压下载的文件到一个你喜欢的目录,例如C:\wkhtmltoimage。
  • 配置环境变量
    为了让系统能够识别wkhtmltoimage的路径,你需要将其添加到系统的环境变量中。具体操作如下:
​                右键点击“此电脑”或“我的电脑”,选择“属性”。
​                点击“高级系统设置”。
​                在“系统属性”窗口中,点击“环境变量”按钮。
​                在“系统变量”区域,找到名为Path的变量并选择它,然后点击“编辑”。
​                在打开的窗口中,点击“新建”,然后添加wkhtmltoimage的安装路径,例如D:\safeware\wkhtmltopdf\bin。
​                点击“确定”保存更改。

  • 验证安装
    打开命令提示符(cmd)并输入以下命令来验证wkhtmltoimage是否正确安装并可以正常运行:
  1. wkhtmltoimage --version
复制代码
二、编写工具类

以下在已在window环境验证
  1. package com.aspire.sxcrec.util;
  2. import java.io.BufferedReader;
  3. import java.io.InputStreamReader;
  4. import java.io.IOException;
  5. public class HtmlToPdfConverter {
  6.     private static String wkhtmltopdfPath = "D:\\safeware\\wkhtmltopdf\\bin\\wkhtmltopdf.exe"; // Windows
  7.     // 或
  8. //    String wkhtmltopdfPath = "/usr/local/bin/wkhtmltopdf"; // Linux/Mac
  9.     public static void main(String[] args) {
  10.         String htmlFilePath = "E:\\Desktop\\export12.html"; // 输入HTML文件路径
  11.         String outputPdfPath = "E:\\Desktop\\output.pdf"; // 输出PDF路径
  12.         try {
  13.             // 构建命令
  14.             ProcessBuilder processBuilder = new ProcessBuilder(
  15.                     wkhtmltopdfPath,
  16.                     htmlFilePath,
  17.                     outputPdfPath
  18.             );
  19.             // 启动进程
  20.             Process process = processBuilder.start();
  21.             // 捕获错误流(wkhtmltopdf 通常将日志输出到错误流)
  22.             BufferedReader errorReader = new BufferedReader(
  23.                     new InputStreamReader(process.getErrorStream())
  24.             );
  25.             String line;
  26.             while ((line = errorReader.readLine()) != null) {
  27.                 System.err.println(line); // 打印错误信息
  28.             }
  29.             // 等待命令执行完成
  30.             int exitCode = process.waitFor();
  31.             if (exitCode == 0) {
  32.                 System.out.println("PDF 生成成功!");
  33.             } else {
  34.                 System.out.println("PDF 生成失败,错误码: " + exitCode);
  35.             }
  36.         } catch (IOException | InterruptedException e) {
  37.             e.printStackTrace();
  38.         }
  39.     }
  40. }
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册