java开发html转pdf 解决方案

article/2025/9/11 14:02:04

    之前在工作中遇到过一个需求,是将用户填写的申报,由固定模板的来生成pdf,后来想到先把内容生成html,

然后再把html格式的内容转换成pdf。

    之前在网上找了很多,有很多内容都是转载的,后来折腾了好几天才试出一个真实能用的,所以在这里记录一下。方便以后查阅,也希望能帮到别人。

1.所需jar包

 core-renderer.jar ,iText-2.0.8.jar

2、示例html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head >
<meta charset="utf-8" /> 
<style> body{ padding:0; margin:0; font-family:SimSun; color: red} </style></head>	<body><h1>2233322dsss--你好--dss2</h1><img alt="w2" width="100px" height="100px" src="http://tva4.sinaimg.cn/crop.0.0.180.180.50/9907976cjw1e8qgp5bmzyj2050050aa8.jpg"/></body></html>

html中要注意的是字体的设置,

font-family:SimSun;

在下面的java代码中,也需要加载对应的字体,不然会出现中文显示不出来的情况

3、java代码

package wqb.pdf.test;import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import org.xhtmlrenderer.pdf.ITextFontResolver;
import org.xhtmlrenderer.pdf.ITextRenderer;
import com.lowagie.text.pdf.BaseFont;/*** html转pdf* * @author wqb**/
public class PdfDemoTest {public static void main(String[] args) throws Exception {//读取html的流InputStream inputStream = PdfDemoTest.class.getResourceAsStream("test.html");//流转换成字符串StringBuffer out = new StringBuffer();byte[] b = new byte[4096];for (int n; (n = inputStream.read(b)) != -1;) {out.append(new String(b, 0, n));}String html = out.toString();String pdffile = "C:\\wqb\\test.pdf";OutputStream os = new FileOutputStream(pdffile);ITextRenderer renderer = new ITextRenderer();renderer.setDocumentFromString(html);// writer.setPageEvent(header);ITextFontResolver fontResolver = renderer.getFontResolver();// 添加字体支持,路径可以自身项目的实际情况设置,我这里是本地项目,而且为了方便测试,就写成固定的了// 实际项目中,可以获取改字体所在真实的服务器的路径,这个方法是本地地址和网络地址都支持的// 这里面添加的是宋体fontResolver.addFont("C:\\software\\eclipse-neon\\workspace\\htmlToPdfDemo\\bin\\SIMSUN.TTC",BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);renderer.layout();renderer.createPDF(os);os.flush();os.close();}
}

4、实际效果

总结:示例代码比较简单,只是单纯的实现了导出pdf而已。在真实业务场景中,html的内容一般是用template或者Velocity 生成。并且字体的路径也不能写死,可以根据自己的项目情况采用合适的读取办法。

需要注意的是字体,一定要设置!!!

对html的规范要求极高,例如:页面中<mate></mate> 等标签必须闭合!!!

示例代码下载地址

比较缺分,所以资源要分了。谅解

------------------------------------------------------码农专用分割线------------------------------------------------------

        上面描述的方法,适用环境是传统的mvc模式的java项目,同时比较适合简单的内容的pdf,局限性比较强。在目前这种前后端分离的大环境下,已经不是太试用了。

        在后面做的项目中,发现了下面一款开源的可独立部署的 web打印和html转pdf工具,比较适合在前后分离的项目 中使用 ,推荐给大伙。我在实际上面中用到了,效果非常好,强烈推荐

bookjs-eazy: WEB打印,HTML转PDF工具。适配chrome headless和wkhtmltopdf docker镜像在线生成PDF 1. 只需专注用H5构件你的PDF内容,而无需关心分页及内容截断问题,内容满了,自动换页,支持预览、WEB打印、页码/目录、自定义页眉页脚。2.前后端皆可生成PDF,命令行PDF生成工具 - Gitee.com

bookjs-easy 的独立部署的pdf下载服务,使用nodejs部署或者直接用docker

screenshot-api-server: 使用node express和puppeteer搭建的WEB截图API服务 网页截图 & pdf 生成 API服务 & docker镜像


http://chatgpt.dhexx.cn/article/4o7SwCoY.shtml

相关文章

php html转pdf wkhtmltopdf

系统CentOS7.6 1.安装 wkhtmltopdf yum install wkhtmltopdf 看别的大佬的教程这步就已经可以正常生成&#xff0c;但我这边运行脚本的时候返回了 "wkhtmltopdf: cannot connect to X server" 2.安装 Xvfb yum install Xvfb 3.运行脚本 xvfb-run --server-ar…

PDF如何转换成HTML?这个方法真的简单!

PDF (Portable Document Format) 是一种常用的文档格式&#xff0c;具有跨平台和跨应用程序的特点&#xff0c;可以保持文档的原始格式&#xff0c;便于在不同的设备上进行查看和编辑。然而&#xff0c;PDF 文件通常不能直接在网页上浏览&#xff0c;因此需要将它转换为 HTML (…

pdf怎么转成html?

pdf怎么转成html&#xff1f;pdf是日常工作中最常见的文件格式&#xff0c;我们会用pdf来处理各种办公文件&#xff0c;大家可能对html文件不是很熟悉&#xff0c;因为普通上班族用不到这种文件&#xff0c;html是一种超文本标记预览&#xff0c;它是由很多代码组成的&#xff…

html页面转成PDF,PDF下载

先说要完成的功能&#xff1a;把填写好的信息转换成PDF文件&#xff0c;并且下载到本地&#xff0c;类似在智联上下载自己的简历&#xff0c;不过下载下来是PDF文件。 参考了网上的多篇博客&#xff0c;发现有两种方法&#xff0c;但两种方法都各有利弊。下边介绍这两种方法。 …

怎么把pdf转为html?PDF转HTML转换器推荐

大家知道HTML格式吗&#xff1f;我们通常上网浏览的网页就是HTML格式。而PDF格式是我们常用的一种文件格式&#xff0c;在不同的设备上打开&#xff0c;既不会影响到PDF内容的排版&#xff0c;也不容易被修改。在工作中&#xff0c;有时为了查看PDF文件在网页状态下的排版&…

html如何转为pdf

本篇文章给大家介绍html转pdf的方式。有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对大家有所帮助。 1、准备资源 itext.jar www.baidu.com html2canvas.js www.baidu.com 2、前端代码&#xff1a; //进行截图操作&#xff0c;document.querySe…

超级简单的html转换为pdf格式方法

类似这样一个网页 按住键盘上的ctrlp &#xff08;这个就是启动了打印选项&#xff09; 找到右上角那个地方&#xff0c;找到另存为PDF&#xff0c;然后这个网页就可以另存为PDF格式了。 我以前也用插件&#xff0c;现在感觉这个方法好用就把插件卸载了。

PDF转HTML格式怎么弄?将PDF转换为HTML的三种简便方法

PDF和HTML是两种常见的文档格式&#xff0c;它们在用途和外观上有很大的差异。然而&#xff0c;令人惊讶的是&#xff0c;这两种看似毫不相关的格式实际上可以相互转换。 一些网页编辑人员在更新网站内容时&#xff0c;通常会先将内容保存为PDF文件&#xff0c;然后在发布时将…

前端实现HTML转PDF下载的两种方式

方式一&#xff1a;使用html2canvas和jspdf插件实现 该方式是通过html2canvas将HTML页面转换成图片&#xff0c;然后再通过jspdf将图片的base64生成为pdf文件。实现步骤如下&#xff1a; 1,下载插件模块 npm install html2canvas jspdf --save2,定义功能实现方法 在项目工具…

最好用Html转pdf的工具——wkhtmltopdf

实习时公司需要把一些html页面中的部分内容生成pdf文件&#xff0c;然后我就找一些用php把html页面围成pdf文件的类。方法是可谓是找了很多很多&#xff0c;什么html2pdf,pdflib,FPDF这些都试过了&#xff0c;但是都没有达到我要的求&#xff08;主要是不能解决中文乱码的问题以…

PDF技术(四)-Java实现Html转PDF文件

html转换为pdf的关键技术是如何处理网页中复杂的css样式、以及中文乱码处理。 各实现对比表 于Windows平台进行测试&#xff1a; 基于IText 基于FlyingSaucer 基于WKHtmlToPdf 基于pd4ml 跨平台性 跨平台 跨平台 跨平台 跨平台 是否安装软件 否 否 需安装WKHtmlT…

Java实现HTML转PDF

Java实现HTML转PDF 效果图一、添加maven依赖二、代码示例三、踩坑&#xff1a;1.simsun.ttc 文件找不到问题2.中文显示问题&#xff1a;3. 问题&#xff08;当然不知这种问题 还有 >等一些特殊转义符号这里只罗列一种&#xff09; 效果图 上图是 html 效果图 生成PDF效果…

【html转pdf】html页面导出为pdf文件,纯html版本,简单实现pdf转换【html2canvas+jspdf】

前言 最近遇到的需求&#xff0c;把html转成pdf文件下载导出。 目前网上看了下&#xff0c;有三种方法&#xff0c;但是其中两种需要后端配合 一种是纯前端实现的&#xff0c;比较简单。所以就使用了这种。 也就是html2canvas jspdf 的这种方法 这种方法实现的思路就是&#…

HTML页面导出为PDF(JSPDF、ITEXT、WKHTMLTOPDF)

html页面导出pdf&#xff0c;本来是一件很简单的事情&#xff0c;在浏览器直接打印(Mac快捷键为⌘p&#xff1b;Windows快捷键为ctrlp)&#xff0c;就可以把页面另存为pdf文件&#xff0c;但对于要经常把页面导出为pdf的用户来说并不友好&#xff0c;一个合格程序员的标准就是&…

html转pdf(总结五种方法Java)

html转pdf&#xff08;总结五种方法Java&#xff09; Java 实现html转pdf&#xff0c;总结五种方法。 推荐使用wkhtmltopdf,Itext 方法一&#xff1a;使用wkhtmltopdf 1、下载插件wkhtmltopdf https://wkhtmltopdf.org/downloads.html 2、本机测试 本目录下cmd进入 输入命…

Java 动态规划

Java中的动态规划 介绍 动态规划典型的被用于优化递归算法&#xff0c;因为它们倾向于以指数的方式进行扩展。动态规划主要思想是将复杂问题&#xff08;带有许多递归调用&#xff09;分解为更小的子问题&#xff0c;然后将它们保存到内存中&#xff0c;这样我们就不必在每次…

PDF如何转换成jpg图片

PDF文件转换成jpg&#xff0c;有些人一看到问题可能有点懵逼&#xff0c;其实就是PDF转换成图片了&#xff0c;只要转换器中的PDF转图片功能中图片格式支持jpg格式&#xff0c;就可以直接转换成jpg图片了&#xff0c;比如奥凯丰 PDF转换大师&#xff0c;支持PDF转jpg、PDF转png…

数据结构和算法Java实现(韩顺平)

目录 稀疏数组 队列 数组模拟队列思路 数组模拟环形队列 链表 单链表的翻转 单链表的逆序输出&#xff08;栈&#xff09; 双向链表 Jasephu 问题 栈 数组模拟 栈实现计算器 中缀表达式 计算器 逆波兰表达式 &#xff08;后缀表达式&#xff09; 中缀转后缀实现计算…

pdf文件转图片(java实现)

项目中pdf文件太大&#xff0c;在手机端打开缓慢。需要将pdf文件转换成图片。加载比较快&#xff0c;增加用户体验。话不多说&#xff0c;直接上干货。 一、在pom引入依赖的jar <!-- https://mvnrepository.com/artifact/org.apache.pdfbox/fontbox --><dependency&g…

袋鼠云与中航金网达成战略合作并成立信创大数据联合实验室

当前&#xff0c;加快推进“新基建”已成为新形势下国家稳定经济发展的重要方针&#xff0c;而作为“新基建底座”的信创产业&#xff0c;有望成为未来中国十年科技发展的核心领域。纵观信创产业近五年发展&#xff0c;产品和技术已从“基本可用”向“好用易用”大跨步迈进&…