解决IDEA启动wkhtmltopdf问题

1.检查是否安装了wkhtmltopdf

2.若安装,检查是否配置了path的环境变量。可通过cmd输入 wkhtmltopdf -V 来尝试。

3.若环境变量以配置,测试下wkhtmltopdf是否能正常使用。可在cmd命令中输入  wkhtmltopdf  www.baidu.com aaaaaa.pdf    点击回车,cmd面板会显示生成100%并且success,可以在user目录下搜索aaaaaa.pdf,看是否存在。注意这里命令的第二个是网址,页可以指定html文件,第三个是要生成的pdf名字,不要写路径,有时候路径会生成失败。

4.若以上都没有问题,那么存在一个非常恶心的清空,就是IDEA检测不到wkhtmltopdf的环境变量。可以在IDEA的Terminal中输入

wkhtmltopdf -V 命令来检查是否检测到了环境变量。若是没有那么就需要修改代码了。

核心代码如下:

String jsonData = JsonUtil.toJson(data);
String htmlStr = ResourceUtil.getResourceAsString("/import/import_preview_tpl.html");
htmlStr = htmlStr.replace("@{cdn}", mediaServer);
htmlStr = htmlStr.replace("@{data}", jsonData);
String htmlPath = FileUtil.randomTempFilePath(".html");
FileUtil.createStringFile(htmlPath, htmlStr);

// generate pdf
String pdfPath = FileUtil.randomTempFilePath(".pdf");
List<String> cmd = new ArrayList<>();
cmd.add("D:\\wkhtmltopdf\\bin\\wkhtmltopdf");//注意这里要指定自己的安装目录了
cmd.add("-s");
cmd.add("letter");
cmd.add("-T");
cmd.add("0");
cmd.add("-B");
cmd.add("0");
cmd.add("-L");
cmd.add("0");
cmd.add("-R");
cmd.add("0");
cmd.add(htmlPath);
cmd.add(pdfPath);
CmdUtil.executeCmd(cmd);

CmdUtil中的executeCmd方法:

public static void executeCmd(List<String> cmd) {
    try {
        ProcessBuilder pb = new ProcessBuilder(cmd);
        pb.redirectErrorStream(true);
        Process process = pb.start();
        BufferedReader errStreamReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
        String line = errStreamReader.readLine();
        while (line != null) {
            logger.info(line);
            line = errStreamReader.readLine();
        }
        process.waitFor();
    } catch (IOException e) {
        throw new LearningGenieRuntimeException("Execute cmd failed.", e);
    } catch (InterruptedException e) {
        throw new LearningGenieRuntimeException("Execute cmd failed.", e);
    }
}
安装wkhtmltopdf 1. 下载安装包 首先,需要到wkhtmltopdf的官网下载相应的安装包。根据自己的系统选择对应的版本,这里以CentOS 7为例。 下载地址:https://wkhtmltopdf.org/downloads.html 2. 安装依赖 安装wkhtmltopdf之前需要安装一些依赖,执行以下命令: ``` yum install -y openssl-devel.x86_64 libXrender-devel.x86_64 libXext.x86_64 fontconfig.x86_64 libX11-devel.x86_64 libjpeg-turbo-devel.x86_64 ``` 3. 安装wkhtmltopdf 将下载好的安装包解压,并将wkhtmltopdf可执行文件复制到/usr/local/bin/目录下,执行以下命令: ``` tar -zxvf wkhtmltox-0.12.6-1.centos7.x86_64.rpm.tar.gz cd wkhtmltox cp bin/wkhtmltopdf /usr/local/bin/ ``` 中文支持问题 如果直接使用wkhtmltopdf转换中文内容,可能会出现乱码或不支持中文的情况。需要安装中文字体才能解决这个问题。 1. 查找中文字体 首先需要找到系统中已安装的中文字体。执行以下命令: ``` fc-list :lang=zh ``` 输出结果中包含的文件路径即为系统中已安装的中文字体。 2. 安装中文字体 如果系统中不存在中文字体,可以下载中文字体并安装。 这里以“文泉驿微米黑”字体为例。执行以下命令: ``` yum install -y wget fontconfig wget https://github.com/ButterAndButterfly/WenQuanYiMicroHei/raw/master/wqy-microhei.ttc mkdir -p /usr/share/fonts/wqy-microhei cp wqy-microhei.ttc /usr/share/fonts/wqy-microhei/ fc-cache -f -v ``` 3. 设置环境变量wkhtmltopdf执行转换时,需要设置一个环境变量来指定字体文件路径。 执行以下命令: ``` export WKHTMLTOPDF_FONT_PATH=/usr/share/fonts/wqy-microhei/ ``` 注意,此命令只在当前会话中生效。如果需要永久生效,可以将其添加到/etc/profile文件中。 完成以上步骤后,就可以愉快地使用wkhtmltopdf进行转换并支持中文了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冒菜-码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值