通过将 HTML 转换为图像,可以捕捉 HTML 内容的外观和布局,并生成静态图像文件。这一技术具有广泛的应用领域,包括生成网站预览、创建屏幕截图、对网页进行归档、以及将 HTML 内容整合到主要处理图像的应用程序中。本文将介绍在 Python 环境中利用 Spire.Doc for Python 库将 HTML 文件或 HTML 字符串转换为图像的方法。
安装 Spire.Doc for Python
本教程需要用到 Spire.Doc for Python 和 plum-dispatch v1.7.4。可以通过以下 pip 命令将它们轻松安装到 Windows 中。
pip install Spire.Doc
如果您不确定如何安装,请参考:如何在 Windows 中安装 Spire.Doc for Python
用 Python 将 HTML 文件转换为图像
在使用 Document.LoadFromFile() 方法将 HTML 文件加载为 Document 对象时,该方法会自动将其内容呈现为 Word 文档的形式。然后,开发者可以使用 Document.SaveImageToStreams() 方法将指定页面保存为图像流并写入图像文件。
以下是使用 Python 将 HTML 文件转换为图像的操作步骤:
- 创建一个 Document 对象。
- 使用 Document.LoadFromFile() 方法加载 HTML 文件。
- 使用 Document.SaveImageToStreams() 方法将特定页面转换为图像流。
- 将图像流写入 PNG 文件。
- Python
from spire.doc import Document
from spire.doc import FileFormat
from spire.doc import XHTMLValidationType
from spire.doc import ImageType
# 创建Document类的对象
doc = Document()
# 载入HTML文件
doc.LoadFromFile("G:/文档/示例22.html", FileFormat.Html, XHTMLValidationType.none)
# 将文档第二页保存为图像
imageStream = doc.SaveImageToStreams(0, ImageType.Bitmap)
# 将图像写入PNG文件
with open("output/HTML转图像.png", "wb") as imageFile:
imageFile.write(imageStream.ToArray())
doc.Close()
用 Python 将 HTML 字符串转换为图像
使用 Paragraph.AppendHTML() 方法可以将简单的 HTML 字符串(通常是文本、链接及其格式)呈现为 Word 文档内容,然后再使用 Document.SaveImageToStreams() 方法将其转换为图像流并写入文件,即可完成 HTML 字符串到图像的转换。
以下是在 Python 程序中将 HTML 字符串转换为图像的操作步骤:
- 创建一个 Document 类的对象。
- 使用 Document.AddSection() 方法添加一个节到文档。
- 使用 Section.AddParagraph() 方法添加一个段落到节。
- 指定 HTML 字符串,并使用 Paragraph.AppendHTML() 方法将其添加到段落中。
- 使用 Document.SaveImageToStreams() 方法将特定页面转换为图像流。
- 将图像流写入 PNG 文件。
- Python
from spire.doc import Document
from spire.doc import ImageType
# 创建Document类的对象
doc = Document()
# 添加一个节到文档
sec = doc.AddSection()
# 添加一个段落到节
par = sec.AddParagraph()
# 指定HTML字符串
htmlString = """
<html>
<head>
<title>旅游统计信息</title>
<style>
h1 {
color: blue;
font-family: Arial, sans-serif;
}
p {
color: green;
font-family: Verdana, sans-serif;
}
ul {
color: red;
font-family: "Courier New", monospace;
}
ol {
color: purple;
font-family: "Times New Roman", serif;
}
table {
border-collapse: collapse;
width: 100%;
}
th, td {
border: 1px solid black;
padding: 8px;
text-align: left;
font-family: Arial, sans-serif;
}
th {
background-color: #f2f2f2;
}
</style>
</head>
<body>
<h1>旅游统计信息</h1>
<p>以下是一些旅游方面的统计信息:</p>
<h2>热门旅游目的地</h2>
<ul>
<li>巴黎</li>
<li>罗马</li>
<li>东京</li>
<li>纽约</li>
</ul>
<h2>旅游收入排行榜</h2>
<table>
<tr>
<th>国家</th>
<th>收入(亿美元)</th>
</tr>
<tr>
<td>法国</td>
<td>79.5</td>
</tr>
<tr>
<td>美国</td>
<td>76.9</td>
</tr>
<tr>
<td>西班牙</td>
<td>67.7</td>
</tr>
<tr>
<td>意大利</td>
<td>58.3</td>
</tr>
</table>
<a href="https://www.example.com">点击这里访问示例网站</a>
</body>
</html>
"""
# 将HTML字符串所展示的内容插入到段落中
par.AppendHTML(htmlString)
# 将文档第一页转换为图像
imageStream = doc.SaveImageToStreams(0, ImageType.Bitmap)
# 将图像写入PNG文件
with open("output/HTML字符串转图像.png", "wb") as imageFile:
imageFile.write(imageStream.ToArray())
doc.Close()
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。