当前位置: 首页 > article >正文

国产化Word处理控件Spire.Doc教程:通过Java简单快速的将 HTML 转换为 PDF

在处理 HTML 文件时,你可能会发现它们在不同的浏览器和屏幕尺寸下的显示效果并不一致。而将 HTML 转换为 PDF 则可以有效地保留其布局和格式,从而确保内容在不同设备和平台上的呈现保持一致。本文将介绍如何在 Spire.Doc for Java 的帮助下通过 Java 将 HTML 文件或 HTML 字符串转换为 PDF

Spire.Doc for Java下载 

安装 Spire.Doc for Java

Spire.Doc for Java 是一款功能强大且专业的 Java 组件,可用于在不依赖 Microsoft Office 的环境下轻松处理 Word 文档,实现文档自动化操作。 要在项目中安装 Spire.Doc,有两种常见方式:

● 手动引入:将 Spire.Doc.jar 文件添加为 Java 项目的依赖项。你可以从慧都网站下载该 JAR 文件。
● 使用 Maven 管理依赖:如果你使用的是 Maven 项目,可以在 pom.xml 文件中添加以下依赖代码来导入 Spire.Doc:

<repositories><repository><id>com.e-iceblue</id><name>e-iceblue</name><url>https://repo.e-iceblue.cn/repository/maven-public/</url></repository>
</repositories>
<dependencies><dependency><groupId>e-iceblue</groupId><artifactId>spire.xls</artifactId><version>15.5.1</version></dependency>
</dependencies>

通过 Java 将 HTML 文件转换为 PDF

在很多情况下,为了确保文档在不同设备上具有一致的显示效果、避免排版错乱,将 HTML 转换为 PDF 是一种理想的解决方案。由于 PDF 具有固定版式的特点,它能在各种终端上保持一致的排版与布局。 借助 Spire.Doc,你可以轻松地将 HTML 文件转换为 PDF。只需使用 Document.saveToFile() 方法即可实现。具体操作步骤如下:

● 创建一个 Document 对象。
● 通过 Document.loadFromFile() 方法加载 HTML 文件。
● 使用 Document.saveToFile(String fileName, FileFormat.PDF) 方法将 HTML 文件转换并保存为 PDF 格式。

import com.spire.doc.*;
import com.spire.doc.documents.XHTMLValidationType;public class htmlFileToPdf {public static void main(String[] args) {// 创建一个 Document 类的对象Document document = new Document();// 加载一个 HTML 文件document.loadFromFile("E:/Administrator/Python1/input/项目进度.html", FileFormat.Html, XHTMLValidationType.None);// 将 HTML 文件保存为 PDFdocument.saveToFile("E:/Administrator/Python1/output/HTML转PDF.pdf", FileFormat.PDF);document.dispose();}
}

通过 Java 将 HTML 转换为 PDF

通过 Java 将 HTML 字符串转换为 PDF

要将 HTML 字符串转换为 PDF,你可以先通过 Paragraph.appendHTML() 方法将该字符串添加到 Word 文档中的段落里,然后再将文档保存为 PDF 文件。具体操作步骤如下:

● 创建一个 Document 对象。
● 使用 Document.addSection() 方法添加一个节。
● 使用 Section.addParagraph() 方法添加一个段落。
● 指定 HTML 字符串,并通过 Paragraph.appendHTML() 方法将其添加到段落中。
● 使用 Document.saveToFile(String fileName, FileFormat.PDF) 方法将文档保存为 PDF 格式。

下方代码展示了如何将一个包含文本和表格内容的 HTML 字符串转换为 PDF:

import com.spire.doc.*;
import com.spire.doc.documents.Paragraph;import java.io.*;public class htmlstringtopdf {public static void main(String[] args) throws IOException {// 创建一个 Document 类的对象Document document = new Document();// 在文档中添加一个节Section sec = document.addSection();// 在节中添加一个段落Paragraph paragraph = sec.addParagraph();// 自定义 HTML 字符串String htmlString = "<!DOCTYPE html>\n" +"<html lang=\"zh-CN\">\n" +"<head>\n" +"  <meta charset=\"UTF-8\">\n" +"  <title>月度销售报告</title>\n" +"  <style>\n" +"    body {\n" +"      font-family: \"Microsoft YaHei\", sans-serif;\n" +"      line-height: 1.6;\n" +"      padding: 20px;\n" +"    }\n" +"    table {\n" +"      border-collapse: collapse;\n" +"      width: 60%;\n" +"      margin-top: 20px;\n" +"    }\n" +"    th, td {\n" +"      border: 1px solid #666;\n" +"      padding: 8px 12px;\n" +"      text-align: center;\n" +"    }\n" +"    th {\n" +"      background-color: #f2f2f2;\n" +"    }\n" +"  </style>\n" +"</head>\n" +"<body>\n" +"\n" +"  <h2>月度销售报告</h2>\n" +"\n" +"  <p>本月销售部门整体表现良好。下表为部分地区销售数据汇总:</p>\n" +"\n" +"  <table>\n" +"    <tr>\n" +"      <th>地区</th>\n" +"      <th>负责人</th>\n" +"      <th>销售额(万元)</th>\n" +"      <th>完成率</th>\n" +"    </tr>\n" +"    <tr>\n" +"      <td>华北地区</td>\n" +"      <td>张伟</td>\n" +"      <td>150</td>\n" +"      <td>125%</td>\n" +"    </tr>\n" +"    <tr>\n" +"      <td>华东地区</td>\n" +"      <td>李静</td>\n" +"      <td>120</td>\n" +"      <td>100%</td>\n" +"    </tr>\n" +"  </table>\n" +"\n" +"</body>\n" +"</html>\n";// 将 HTML 字符串添加到段落中paragraph.appendHTML(htmlString);// 将 HTML 字符串保存为 PDF 文件document.saveToFile("E:/Administrator/Python1/output/htmlString转PDF.pdf", FileFormat.PDF);document.dispose();}
}

Java 将 HTML 字符串转换为 PDF

结尾

本指南介绍了如何使用 Java 将 HTML 文件或 HTML 字符串转换为 PDF 文件。借助 Spire.Doc,你可以轻松实现这一过程,快速高效地完成文档转换任务。

相关文章:

国产化Word处理控件Spire.Doc教程:通过Java简单快速的将 HTML 转换为 PDF

在处理 HTML 文件时&#xff0c;你可能会发现它们在不同的浏览器和屏幕尺寸下的显示效果并不一致。而将 HTML 转换为 PDF 则可以有效地保留其布局和格式&#xff0c;从而确保内容在不同设备和平台上的呈现保持一致。本文将介绍如何在 Spire.Doc for Java 的帮助下通过 Java 将 …...

Spring AI 1.0 GA深度解析与最佳实践

随着人工智能技术的快速发展&#xff0c;Spring AI 1.0 GA 的发布标志着 Spring 生态在 AI 领域迈出了重要一步。本文将从原理、全景架构设计、最佳实践、性能测试对比等维度&#xff0c;全面解析如何基于 Spring AI 构建企业级 AI 应用&#xff0c;并以接入 DeepSeek 大模型为…...

Java求职面试:从Spring到微服务的技术挑战

Java求职面试&#xff1a;从Spring到微服务的技术挑战 在这个故事中&#xff0c;我们将进入一个模拟的互联网大厂Java求职者面试现场。面试官严肃而专业&#xff0c;而求职者谢飞机则以其幽默和捉摸不透的回答&#xff0c;让面试过程充满了趣味。 第一轮&#xff1a;基础框架…...

鸿蒙OSUniApp 开发的图文混排展示组件#三方框架 #Uniapp

使用 UniApp 开发的图文混排展示组件 在移动应用开发中&#xff0c;图文混排展示是资讯、社区、电商、教育等场景中极为常见的需求。一个灵活、美观的图文混排组件&#xff0c;不仅能提升内容的可读性&#xff0c;还能增强用户的视觉体验。随着 HarmonyOS&#xff08;鸿蒙&…...

WHAT - 学习 WebSocket 实时 Web 开发

文章目录 一、基础知识了解1. WebSocket 是什么&#xff1f;2. 它的优势&#xff1a; 二、基本工作流程三、快速体验&#xff1a;使用原生 WebSocket客户端&#xff08;浏览器端 JS&#xff09;&#xff1a;服务端&#xff08;Node.js 示例&#xff0c;使用 ws 库&#xff09; …...

5G NTN卫星通信发展现状(截止2025年3月)

今天咱们用实实在在的数据唠唠卫星通信这事儿—这些数字可比科幻片还刺激&#xff0c;直接告诉你这玩意儿现在有多火&#xff0c;未来能有多野&#xff01; 先甩个大数字&#xff1a;截至2025年3月&#xff0c;全球已经有143个运营商和卫星厂商的合作项目&#xff0c;覆盖53个国…...

【计算机网络】第2章:应用层—DNS

目录 一、PPT 二、总结 DNS&#xff08;域名系统&#xff09;详解 &#xff08;一&#xff09;DNS核心概念 &#xff08;二&#xff09;DNS查询过程&#xff08;重点❗&#xff09; &#xff08;三&#xff09;DNS资源记录&#xff08;RR&#xff09;类型…...

[Linux]虚拟地址到物理地址的转化

[Linux]虚拟地址到物理地址的转化 水墨不写bug 文章目录 一、再次认识地址空间二、页表1、页表的结构设计2、页表节省了空间&#xff0c;省在哪里&#xff1f;3、页表的物理实现 一、再次认识地址空间 OS和磁盘交互的内存基本单位是4KB&#xff0c;这4KB通常被称为内存块。OS对…...

Linux线程入门

目录 Linux线程概念 什么是线程 重新理解进程 线程的优点 线程的缺点 线程的异常 线程用途 Linux线程概念 什么是线程 在一个程序里的一个执行路线就叫做线程&#xff08;thread&#xff09;。更准确的定义是&#xff1a;线程是“一个进程内部的控制序列”。一切进程至…...

Kubernetes超详细教程,一篇文章帮助你从零开始学习k8s,从入门到实战

k8s 概述 k8s github地址&#xff1a;https://github.com/kubernetes/kubernetes 官方文档&#xff1a;https://kubernetes.io/zh-cn/docs/home/ k8s&#xff0c;全程是 kubernetes&#xff0c;这个名字源于希腊语&#xff0c;意为"舵手"或"飞行员” k8s 这…...

Docker基础 -- Ubuntu 22.04 AArch64 交叉编译 Docker 镜像构建指南

Ubuntu 22.04 AArch64 交叉编译 Docker 镜像构建指南 作者&#xff1a; &#xff08;填写作者&#xff09; 发布日期&#xff1a; 2025‑05‑26 1 背景与目标 在企业内网&#xff08;需要代理&#xff09;环境下&#xff0c;我们需要一套可靠、可复用的 Ubuntu 22.04 交叉编…...

【Elasticsearch】使用脚本删除索引中的某个字段

在 Elasticsearch 中&#xff0c;删除索引中的某个字段可以通过以下几种方式实现&#xff0c;具体取决于你的需求和场景。以下是几种常见的方法&#xff1a; 方法 1&#xff1a;使用 _update_by_query API 删除字段 _update_by_query API 可以对索引中的文档执行批量更新操作&…...

OpenHarmony平台驱动使用(二),CLOCK

OpenHarmony平台驱动使用&#xff08;二&#xff09; CLOCK 概述 功能简介 CLOCK&#xff0c;时钟是系统各个部件运行的基础&#xff0c;以CPU时钟举例&#xff0c;CPU 时钟是指 CPU 内部的时钟发生器&#xff0c;它以频率的形式工作&#xff0c;用来同步和控制 CPU 内部的各…...

我们是如何为 ES|QL 重建自动补全功能的

作者&#xff1a;来自 Elastic Drew Tate Elasticsearch 拥有许多新功能&#xff0c;可以帮助你根据使用场景构建最佳搜索方案。浏览我们的示例笔记本了解更多内容&#xff0c;开始免费试用云服务&#xff0c;或者立即在本地机器上尝试 Elastic。 对于我们开发者来说&#xff0…...

Keepalived 配置 VIP 的核心步骤

Keepalived 配置 VIP 的核心步骤主要涉及安装软件、主备节点配置及服务管理。以下是具体操作指南: 一、安装 Keepalived ‌Ubuntu/Debian 系统‌ sudo apt update sudo apt install keepalived ‌CentOS/RHEL 系统‌ sudo yum install keepalived 注:需确保已配置 EPE…...

如何使用 Redis 快速实现排行榜?

Redis 的 Sorted Set&#xff08;有序集合&#xff09; 是实现排行榜的高效工具&#xff0c;其天然支持按分数排序、范围查询和原子操作。以下是快速实现排行榜的步骤和核心方案&#xff1a; 一、核心数据结构&#xff1a;Sorted Set 特性&#xff1a; 每个成员&#xff08;me…...

MATLAB在逐渐被Python淘汰吗

MATLAB在学术研究、工程仿真、数值计算等传统领域仍占据一席之地&#xff0c;但Python因其开源免费、生态丰富、易于集成的优势&#xff0c;正在快速崛起&#xff0c;逐步蚕食MATLAB的市场份额。尤其在人工智能、数据分析和科学计算等领域&#xff0c;Python的优势愈发明显。例…...

Git 使用规范

Git 使用规范 一、版本控制的核心原则 &#x1f9ed;二、分支策略&#xff08;Branch Strategy&#xff09; &#x1f33f;2.1 分支类型与命名规范2.2 可视化流程图 三、提交信息规范&#xff08;Commit Message&#xff09;✍️3.1 提交格式3.2 Type 类型说明 四、Tag 版本规范…...

代码随想录第43天:图论4(最小生成树、拓扑排序)

一、冗余的边II&#xff08;Kamacoder 109&#xff09; from collections import defaultdict# 并查集 - 查找根节点&#xff08;路径压缩&#xff09; def find(fa, x):if fa[x] ! x:fa[x] find(fa, fa[x])return fa[x]# 并查集 - 合并两个集合&#xff0c;返回是否合并成功 …...

AI智能体|扣子(Coze)搭建【自动生成超高质量PPT】工作流

各位好久不见&#xff0c;你的失踪人口又回来了&#xff0c;已经超过一周的时间没有进行文章的更新了。 没更新的这段时间&#xff0c;主要还是因为工作上的调整以及身体生病所导致的停更&#xff0c;具体以后再说。 我们先讲今天的主要主题&#xff0c;使用 Coze 智能体一键生…...

list.sort(*, key=None, reverse=False)的两个问题

在python官网中&#xff0c;5.1. More on Lists&#xff0c;list.sort()是关于排序的方法。 list.sort(*&#xff0c; keyNone, reverseFalse) 中有两个问题&#xff1a; * 是什么意思key有什么作用 * 是什么意思 * 表示后面必须是关键字参数&#xff0c;具体见python官网4…...

文档处理的相关工具

目前网页端的文档&#xff0c;可以通过沉浸式翻译来进行翻译阅读和学习。 但是某些文献只有pdf下载的版本&#xff0c;所以需要一个免费的针对pdf的翻译工具。 保留公式和图片格式。 推荐一个pdf翻译的工具&#xff0c;可以自己部署使用。如果需要word版本&#xff0c;后面讨论…...

java基础(面向对象进阶高级)内部类

内部类 内部类概述、成员内部类 (了解&#xff09; 内部类创建对象&#xff1a; 一定要继承外部类对象&#xff0c;才能创建内部类对象。 拓展:成员内部类访问外部类的成员特点&#xff1a; 成员内部类中&#xff0c;是否可以直接访问外部类的实例成员?? 当然可以啊&#x…...

使用Python,OpenCV,Tesseract-OCR对自己的运动数据图片进行识别及分析,并使用Matplotlib绘制配速图出来

使用Python,OpenCV,Tesseract-OCR对自己的运动数据图片进行识别及分析,并使用Matplotlib绘制配速图出来 1. 效果图2. 源码3. 全量源码及运动图片资源参考主要分为 目录下图片解析及读取;拼九宫格图片出来,可以自由配置(m*n)取决于自己有多少张运动图片遍历图片并进行运动…...

小白的进阶之路系列之七----人工智能从初步到精通pytorch自动微分优化以及载入和保存模型

本文将介绍Pytorch的以下内容 自动微分函数 优化 模型保存和载入 好了,我们首先介绍一下关于微分的内容。 在训练神经网络时,最常用的算法是反向传播算法。在该算法中,根据损失函数相对于给定参数的梯度来调整参数(模型权重)。 为了计算这些梯度,PyTorch有一个内置…...

创建型模式之 Builder (生成器)

创建型模式之 Builder (生成器) 摘要&#xff1a; 本文介绍了生成器&#xff08;Builder&#xff09;设计模式&#xff0c;属于创建型模式之一。该模式通过将复杂对象的构建与表示分离&#xff0c;使同一构建过程能创建不同表现形式。文章以小米汽车不同配置版本为例说明了模式…...

智能物资出入库管控系统

概述 智能物资管理系统利用RFID自动识别技术&#xff0c;物联网技术、人脸识别、指纹、指静脉生物识别技术&#xff0c;应用于军械装备的管理&#xff0c;可实时准确采集军械装备编配、 储存、供应、使用等数据&#xff0c;实时掌握军械装备物资的分布及数量 状况。细化管理到…...

鸿蒙OSUniApp 制作倒计时与提醒功能#三方框架 #Uniapp

使用 UniApp 制作倒计时与提醒功能 前言 倒计时与提醒功能在移动应用中应用广泛&#xff0c;如活动秒杀、任务提醒、考试倒计时等。一个实用的倒计时组件不仅要精准计时&#xff0c;还要兼容多端&#xff0c;尤其是在鸿蒙&#xff08;HarmonyOS&#xff09;等新兴平台上保证流…...

深入剖析网络协议:七层协议与四层协议详解

在计算机网络的世界中&#xff0c;数据的传输与交互离不开协议的规范。其中&#xff0c;七层协议和四层协议是网络通信架构的核心概念&#xff0c;它们如同网络世界的 “交通规则”&#xff0c;保障着数据准确、高效地在不同设备间流转。本文将深入解读七层协议与四层协议&…...

机器学习-线性回归基础

一、什么是回归 依据输入x写出一个目标值y的计算方程&#xff0c;求回归系数的过程就叫回归。简言之&#xff1a;根据题意列出方程&#xff0c;求出系数的过程就叫做回归。 回归的目的是预测数值型的目标值y&#xff0c;分类的目的预测标称型的目标值y。 二、线性回归 2.1线性…...