You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过代码将Karate生成的HTML报告转换为PDF格式?

将Karate HTML报告转为PDF的程序化方案

Java 方案(基于Flying Saucer)

Flying Saucer是Java生态中成熟的HTML转PDF工具,能很好处理Karate生成的静态HTML报告:

1. 添加依赖(Maven)

在pom.xml中加入Flying Saucer的核心依赖:

<dependency>
    <groupId>org.xhtmlrenderer</groupId>
    <artifactId>flying-saucer-pdf</artifactId>
    <version>9.1.22</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.7.36</version>
</dependency>

2. 编写转换代码

创建Java类读取target下的Karate HTML报告,转换为PDF:

import org.xhtmlrenderer.pdf.ITextRenderer;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.Reader;

public class KarateReportToPdf {
    public static void main(String[] args) throws Exception {
        // 替换为你的Karate HTML报告路径
        String htmlPath = "target/karate-reports/karate-summary.html";
        // 输出PDF路径
        String pdfPath = "target/karate-reports/karate-summary.pdf";

        try (Reader reader = new FileReader(htmlPath);
             FileOutputStream fos = new FileOutputStream(pdfPath)) {
            ITextRenderer renderer = new ITextRenderer();
            renderer.setDocument(reader);
            renderer.layout();
            renderer.createPDF(fos);
            System.out.println("PDF生成完成:" + pdfPath);
        }
    }
}

JavaScript 方案(基于Puppeteer)

Puppeteer通过控制无头Chrome渲染HTML,适合处理包含动态JS的Karate报告:

1. 安装依赖

在项目根目录执行:

npm install puppeteer

2. 编写转换脚本

创建convert-report.js文件:

const puppeteer = require('puppeteer');
const path = require('path');

async function convertHtmlToPdf() {
    // 替换为你的Karate HTML报告相对路径
    const htmlFilePath = path.resolve(__dirname, 'target/karate-reports/karate-summary.html');
    const pdfFilePath = path.resolve(__dirname, 'target/karate-reports/karate-summary.pdf');

    const browser = await puppeteer.launch({ headless: 'new' });
    const page = await browser.newPage();
    
    // 加载本地HTML文件
    await page.goto(`file://${htmlFilePath}`, { waitUntil: 'networkidle0' });
    
    // 生成PDF,可根据需求调整参数
    await page.pdf({
        path: pdfFilePath,
        format: 'A4',
        printBackground: true // 确保背景样式被渲染
    });

    await browser.close();
    console.log(`PDF已生成:${pdfFilePath}`);
}

convertHtmlToPdf().catch(err => console.error('转换失败:', err));

执行脚本

node convert-report.js

注意事项

  • 确保Karate的HTML报告已生成在target目录下,路径需根据实际项目结构调整
  • Java方案中,若报告包含外部资源(如CSS、图片),需确保资源路径正确,或提前将HTML转为内联资源格式
  • Puppeteer首次运行会自动下载Chromium,需确保网络通畅

内容的提问来源于stack exchange,提问作者Yarasu Lavanya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 21:38:14