使用wkhtmltopdf 完成html转PDF

打印 上一主题 下一主题

主题 1665|帖子 1665|积分 4995

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
一、搭建所需情况


  • 下载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. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

万有斥力

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表