推荐文章:HTML转PDF开源利器——htmltopdf-java

推荐文章:HTML转PDF开源利器——htmltopdf-java

htmltopdf-javaAn HTML to PDF conversion library written in Java, based on wkhtmltopdf.项目地址:https://gitcode.com/gh_mirrors/ht/htmltopdf-java

项目介绍

htmltopdf-java 是一个基于 wkhtmltopdf 的开源项目,专注于将HTML文档转换为PDF格式。通过JNA(Java Native Access)技术,该项目提供了一个对Java开发者友好的接口层,使得在Java环境中进行HTML到PDF的转换变得简单而高效。

项目技术分析

htmltopdf-java 的核心技术栈包括:

  • wkhtmltopdf:一个强大的HTML到PDF转换工具,基于Qt库进行网页渲染。
  • JNA:Java Native Access,允许Java代码直接调用本地库(如C/C++库),无需编写JNI代码。
  • Java:提供简洁的API接口,方便Java开发者集成和使用。

项目及技术应用场景

htmltopdf-java 的应用场景广泛,特别适合以下情况:

  • Web应用开发:需要将网页内容或生成的HTML文档转换为PDF格式,如报表生成、电子书制作等。
  • 企业级应用:需要将业务数据以PDF格式输出,便于存档和分发。
  • 在线服务:提供HTML到PDF的转换服务,如在线PDF生成工具、API服务等。

项目特点

htmltopdf-java 具有以下显著特点:

  • 易用性:提供简洁的Java API,方便快速集成和使用。
  • 灵活性:支持从HTML字符串、URL以及多个对象进行PDF转换。
  • 流式处理:支持将PDF转换结果输出为InputStream,便于直接作为HTTP响应或邮件附件。
  • 线程安全:尽管wkhtmltopdf的单线程渲染限制了并发转换,但库本身是线程安全的。

快速开始

以下是一些简单的示例,帮助你快速上手:

保存HTML为PDF文件

boolean success = HtmlToPdf.create()
    .object(HtmlToPdfObject.forHtml("<p><em>Apples</em>, not oranges</p>"))
    .convert("/path/to/file.pdf");

保存网页URL为PDF文件

boolean success = HtmlToPdf.create()
    .object(HtmlToPdfObject.forUrl("https://github.com/wooio/htmltopdf-java"))
    .convert("/path/to/file.pdf");

保存多个对象为PDF文件

boolean success = HtmlToPdf.create()
    .object(HtmlToPdfObject.forUrl("https://github.com/wooio/htmltopdf-java"))
    .object(HtmlToPdfObject.forHtml("<p>This is the second object...</p>"))
    .convert("/path/to/file.pdf");

转换为InputStream

HtmlToPdf htmlToPdf = HtmlToPdf.create()
    .object(HtmlToPdfObject.forUrl("https://github.com/wooio/htmltopdf-java"));

try (InputStream in = htmlToPdf.convert()) {
    // "in" has PDF bytes loaded
} catch (HtmlToPdfException e) {
    // HtmlToPdfException is a RuntimeException, thus you are not required to
    // catch it in this scope. It is thrown when the conversion fails
    // for any reason.
}

并发限制

需要注意的是,尽管库是线程安全的,但由于wkhtmltopdf的单线程渲染机制,目前每个进程只能同时进行一个转换任务。

故障排除

如果在运行时遇到以下异常:

java.lang.UnsatisfiedLinkError: Unable to load library '/tmp/io.woo.htmltopdf/wkhtmltox/0.12.5/libwkhtmltox.so': Native library (tmp/io.woo.htmltopdf/wkhtmltox/0.12.5/libwkhtmltox.so) not found in resource path

这通常意味着缺少wkhtmltopdf的某些本地依赖包。请确保以下包已安装:

  • libc6 (或 glibc)
  • libx11
  • libxext
  • libxrender
  • libstdc++
  • libssl1.0
  • freetype

htmltopdf-javaAn HTML to PDF conversion library written in Java, based on wkhtmltopdf.项目地址:https://gitcode.com/gh_mirrors/ht/htmltopdf-java

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

温姬尤Lee

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

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

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

打赏作者

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

抵扣说明:

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

余额充值