冰蓝科技
|
028-81705109
|
|
微信扫一扫
|

Spire.Cloud 纯前端文档控件

Spire.Office for Java 9.1.4已发布。在该版本中,Spire.PDF for Java 提高了绘制水印的效率;Spire.Doc for Java 增加了添加图像水印的新方法;Spire.Presentation for Java 提升了从PowerPoint 到 SVG格式的转换速度。此外,一些已知问题也在该版本中得到修复。详情请阅读以下内容。

获取 Spire.Office for Java 9.1.4请点击:

https://www.e-iceblue.cn/Downloads/Spire-Office-JAVA.html


Spire.PDF for Java

新功能:

问题修复:


Spire.XLS for Java

问题修复:


Spire.Doc for Java

调整:

新功能:

问题修复:


Spire.OCR for Java

问题修复:


Spire.Presentation for Java

新功能:

Python示例 - 合并Excel文档和工作表

在数据分析、财务统计、项目管理等多种工作场景中,经常会遇到需要将多个Excel文件或工作表合并的需求。手动逐一复制粘贴不仅耗时费力,还容易出现遗漏和错误。借助编程语言实现Excel文件的批量合并,能够极大提升工作效率和数据准确性。

本文将详细介绍如何使用 Python 和 Spire.XLS for Python 库来实现多Excel文件和多工作表的批量合并。无论你是数据分析师、财务人员,还是项目经理,这篇教程都能为你带来实用的解决方案,让复杂的 Excel 合并工作变得轻松高效。

目录

为什么使用 Python 合并 Excel 文件?

使用 Python 合并 Excel 文件有以下几个优势:

  • 自动化处理:可以批量处理大量文件,节省手动操作时间
  • 跨平台:不需要安装 Microsoft Excel,可在任何操作系统上运行
  • 灵活性:可以根据需要定制合并逻辑
  • 可重复性:脚本可以保存并重复使用,确保每次操作的一致性
  • 处理大数据:可以处理 Excel 手动操作难以应对的大型数据集

Spire.XLS for Python 简介

Spire.XLS for Python 是一款独立且功能强大的 Excel 处理库,专为创建、读取、编辑和转换 Excel 文件而设计。它无需依赖 Microsoft Excel 软件即可完成各类操作,非常适合服务器或无 Excel 环境下的自动化任务。

主要功能包括:

  • 多格式支持:兼容 .xls、.xlsx 等多种 Excel 文件格式。
  • 灵活的工作表操作:支持复制、重命名、删除及合并工作表,操作便捷。
  • 保留公式与格式:编辑和合并过程中完美保留公式和单元格格式。
  • 丰富的高级功能:支持公式计算、图表生成、条件格式设置以及数据透视表创建等。
  • 多种文件格式转换:能够将 Excel 文件导出为 PDF、 HTML、 CSV 等多种格式,满足多样化需求。
  • 无需安装 Excel:完全独立运行,无需依赖 Microsoft Excel,适用于服务器和云端环境。

安装方法

在终端或命令行中执行以下命令即可快速安装 Spire.XLS:

pip install spire.xls

如何使用 Python 合并多个 Excel 文件为一个文件

将多个 Excel 文件合并到一个文件中,可以方便统一管理和查看数据,特别适用于整合来自不同部门、区域或时间段的工作表。该方法会完整保留每个原始文件中的所有工作表,确保数据结构和内容不受影响。

实现步骤

  • 创建一个目标工作簿,用于保存合并后的所有工作表。
  • 遍历指定文件夹中的所有 Excel 文件。
  • 使用 LoadFromFile() 方法加载每个文件。
  • 使用 AddCopy() 方法依次将文件中的每个工作表复制到目标工作簿。
  • 将合并后的工作簿保存为新的 Excel 文件。

代码示例

import os
from spire.xls import *

# 定义待合并Excel文件所在的文件夹路径
input_folder = './excel_files'
# 定义合并后保存的Excel文件名称
output_file = 'merged_workbook.xlsx'

# 创建目标工作簿,用于保存合并后的所有工作表
merged_workbook = Workbook()
# 删除默认工作表
merged_workbook.Worksheets.Clear()

# 遍历文件夹中所有文件
for filename in os.listdir(input_folder):
    # 只处理扩展名为xls或xlsx的文件(忽略大小写)
    if filename.lower().endswith(('.xls', '.xlsx')):
        file_path = os.path.join(input_folder, filename)

        # 加载当前Excel文件
        source_wb = Workbook()
        source_wb.LoadFromFile(file_path)

        # 复制当前文件中的每个工作表到目标工作簿
        for i in range(source_wb.Worksheets.Count):
            sheet = source_wb.Worksheets[i]
            merged_workbook.Worksheets.AddCopy(sheet, WorksheetCopyType.CopyAll)

        # 释放当前工作簿资源
        source_wb.Dispose()

# 保存合并后的工作簿到指定文件
merged_workbook.SaveToFile(output_file, ExcelVersion.Version2016)
print(f"合并完成,文件已保存为 {output_file}")

# 释放目标工作簿资源
merged_workbook.Dispose()

使用Python和Spire.XLS批量合成多个Excel文件

如何使用 Python 合并多个 Excel 工作表为一个工作表

将多个 Excel 工作表的数据汇总到同一个工作表中,有助于集中管理和分析销售记录、调查数据、绩效报表等信息,提高数据整合效率。

实现步骤

  • 新建一个工作簿,添加一个新的工作表作为合并的目标工作表。
  • 遍历文件夹中的所有 Excel 文件。
  • 使用 LoadFromFile 方法加载每个文件,并获取需要合并的工作表,例如第一个工作表。
  • 使用 Copy 方法将工作表中有效的数据区域复制到目标工作表的指定位置。
  • 保存合并后的工作簿为新的 Excel 文件。

代码示例

import os
from spire.xls import *

# 定义存放Excel文件的文件夹路径
input_folder = './excel_worksheets'

# 定义合并后保存的文件名
output_file = 'merged_into_one_sheet.xlsx'

# 创建一个新的工作簿,并移除默认工作表
merged_workbook = Workbook()
merged_workbook.Worksheets.Clear()

# 创建一个新的工作表,作为目标工作表
merged_sheet = merged_workbook.Worksheets.Add("Sheet1")

current_row = 1  # 目标工作表当前写入的起始行

# 遍历文件夹中的所有Excel文件
for filename in os.listdir(input_folder):
    if filename.lower().endswith(('.xlsx', '.xls')):
        file_path = os.path.join(input_folder, filename)

        # 加载当前Excel文件
        workbook = Workbook()
        workbook.LoadFromFile(file_path)

        # 获取当前文件的第一个工作表
        sheet = workbook.Worksheets[0]

        # 获取当前工作表的有效数据范围(只包含有数据的区域)
        source_range = sheet.AllocatedRange

        # 目标工作表的起始写入单元格
        dest_range = merged_sheet.Range[current_row, 1]

        # 将数据复制到目标工作表指定位置
        source_range.Copy(dest_range)

        # 更新当前写入行数(按实际数据行数累加)
        current_row += source_range.RowCount

        # 释放当前工作簿资源
        workbook.Dispose()

# 保存合并后的工作簿
merged_workbook.SaveToFile(output_file, ExcelVersion.Version2016)
merged_workbook.Dispose()

print(f"多个工作表数据已合并至一个工作表,文件保存为 {output_file}")

使用Python和Spire.XLS将多个Excel工作表合并为一个工作表

总结

通过 Python 和 Spire.XLS 库,可以实现对 Excel 文件的自动化批量合并,既节省了大量的人工操作时间,也降低了因手动处理带来的错误风险。该方法支持多种 Excel 格式,且不依赖于 Microsoft Excel 软件,适合多种运行环境。无论是将多个文件的工作表合并到一个文件,还是将多个工作表的数据汇总到单一工作表,自动化处理都能有效提升数据管理的效率和准确性。

常见问题解答(FAQs)

Q1:可以同时合并 .xls 和 .xlsx 格式的文件吗?

A1:可以,Spire.XLS 支持这两种格式,无需转换。

Q2:使用 Spire.XLS 需要安装 Excel 吗?

A2:不需要,Spire.XLS 是独立库,无需安装 Microsoft Office。

Q3:可以只合并指定的工作表吗?

A3:可以,代码中可按工作表名称或索引选择,例如:

sheet = source_workbook.Worksheets["Summary"]

Q4:如何避免重复复制表头?

A4:可以添加判断逻辑,例如:

if current_row > 1:
    start_row = 2 # 跳过表头
else:
    start_row = 1

Q5:能否标注每行数据来源于哪个文件?

A5:可以,在合并表中新增一列,用于记录来源文件名。

Q6:Spire.XLS 对文件大小或行数有限制吗?

A6:其限制与 Excel 本身一致,.xlsx 支持最大 1,048,576 行 × 16,384 列,.xls 支持最大 65,536 行 × 256 列。

Q7:合并时能否保留公式和格式?

A7:可以,合并过程中会完整保留公式和格式。

Spire.Doc for Java 12.1.10已发布。本次更新将命名空间com.spire.ms.Printing.*更改为com.spire.doc.printing.*。此外,一些已知问题也在该版本中被成功修复,如将Word转换为PDF时,程序抛出java.lang.OutOfMemoryError异常的问题。详情请阅读以下内容。

功能调整:

问题修复:


获取Spire.Doc for Java 12.1.10请点击:

https://www.e-iceblue.cn/Downloads/Spire-Doc-JAVA.html

Spire.XLS for Java 14.1.1 已发布。本次更新增强了 HTML 到 XLSX 的转换功能。此外,一些已知问题也在该版本中得到修复,如用WPS工具进行打印预览被保存出的XLSX文档时页边距不正确的问题。详情请阅读以下内容。

问题修复:


获取Spire.XLS for Java 14.1.1请点击:

https://www.e-iceblue.cn/Downloads/Spire-XLS-JAVA.html

Spire.Doc 12.1.5 已发布。该版本移除了 MonoAndroid 包和 Xamarin.iOS 包。同时也对文档的密码功能做出了一系列变更。此外,还修复了一些已知问题,如修复了在新建 Document() 对象和应用 LicenseKey 后,加载文档时部分数据丢失的问题。详情请阅读以下内容。

功能调整:

问题修复:


获取 Spire.Doc 12.1.5 请点击:

https://www.e-iceblue.cn/Downloads/Spire-Doc-NET.html

Spire.Office for Python 9.1.0 已发布。本次更新在 Spire.PDF for Python、Spire.Doc for Python、Spire.XLS for Python 和 Spire.Presentation for Python 中增加了自定义异常类 SpireException,同时还修复了一些已知问题。详情请阅读以下内容。

获取 Spire.Office for Python 9.1.0请点击:

https://www.e-iceblue.cn/Downloads/Spire-Office-Python.html


Spire.Doc for Python

新功能:

问题修复:


Spire.Presentation for Python

新功能:

问题修复:


Spire.PDF for Python

新功能:


Spire.XLS for Python

新功能:

表格作为一种强大的数据可视化工具,在 PowerPoint 演示文稿中扮演着关键角色。其设计基于行和列的有序结构,使得各类文本、数值和其他类型的信息能够在单元格内精确呈现。在制作演示文稿时,插入表格能够让用户有效地构建和展示经过整理的数据内容,从而使幻灯片显得更有逻辑层次。相较于单纯的文本叙述,表格更能凸显各组数据之间的对比关系,增强数据的易读性与直观性,进而提升观众对演示内容的理解深度和接受度。本文将指导如何运用 Spire.Presentation for Python 在 PowerPoint 中添加和编辑表格。

安装 Spire.Presentation for Python

本教程需要 Spire.Presentation for Python 和 plum-dispatch v1.7.4。您可以通过以下 pip 命令将它们轻松安装到 Windows 中。

pip install Spire.Presentation

如果您不确定如何安装,请参考此教程: 如何在 Windows 中安装 Spire.Presentation for Python

Python 向 PowerPoint 添加表格

Spire.Presentation for Python 提供了 Presentation.Slides[].Shapes.AppendTable(x: float, y: float, widths: List[float], heights: List[float]) 方法,用于向 PowerPoint 演示文稿中添加表格。具体操作步骤如下:

  • Python
from spire.presentation.common import *
import math
from spire.presentation import *

inputFile = "模板.pptx"
outputFile = "创建表格.pptx"

# 创建 Presentation 类的对象
presentation = Presentation()

# 加载一个演示文稿
presentation.LoadFromFile(inputFile)

# 定义表格列宽度
widths = [100, 100, 100, 100, 100]

# 定义表格行高度
heights = [25, 25, 25, 25, 25, 25, 25, 25, 25]

# 计算表格左边距离
left = math.trunc(presentation.SlideSize.Size.Width / float(2)) - 250

# 在第一页幻灯片上添加表格
table = presentation.Slides[0].Shapes.AppendTable(left, 150, widths, heights)

# 将表格数据定义为二维字符串数组
dataStr = [["产品ID", "产品名称", "销售数量(斤)","单价(元/斤)","销售额(元)"], 
           ["001", "香蕉", "800","3.0","2400.00"],
           ["002", "苹果", "500","6.5","3250.00"], 
           ["003", "菠萝", "500","5.0","2500.00"], 
           ["004", "芒果", "200","6.0","1200.00"], 
           ["005", "橙子", "1000","5.0","5000.00"], 
           ["006", "柠檬", "300","7.0","2100.00"], 
           ["007", "枇杷", "120","10.0","1200.00"], 
           ["008", "草莓", "600","30.00","18000.00"]]

# 循环遍历数组
for i in range(0, len(dataStr)):
    for j in range(0, len(dataStr[0])):

        # 使用这些数据填充表格的每个单元格
        table[j,i].TextFrame.Text = dataStr[i][j]

        # 设置字体名称和字体大小
        table[j,i].TextFrame.Paragraphs[0].TextRanges[0].LatinFont = TextFont("微软雅黑")
        table[j,i].TextFrame.Paragraphs[0].TextRanges[0].FontHeight = 12

# 将表格的第一行对齐方式设置为居中
for i in range(0, len(dataStr[0])):
    table[i,0].TextFrame.Paragraphs[0].Alignment = TextAlignmentType.Center

# 应用样式到表格
table.StylePreset = TableStylePreset.LightStyle3Accent1

# 保存结果文件
presentation.SaveToFile(outputFile, FileFormat.Pptx2013)

# 释放对象
presentation.Dispose()

Python 添加或编辑 PowerPoint 表格

Python 编辑 PowerPoint 中的表格

您还可以根据需要编辑演示文稿中的表格,例如替换数据、更改样式、突出显示数据等。以下是详细步骤:

  • Python
from spire.presentation.common import *
from spire.presentation import *

inputFile = "创建表格.pptx"
outputFile = "编辑表格.pptx"

# 创建Presentation类的对象
presentation = Presentation()

# 加载示例演示文稿
presentation.LoadFromFile(inputFile)

# 需要替换的数据数组
strs = ["002", "水蜜桃", "300", "8.0", "2400.00"]
table = None

# 遍历第一张幻灯片中的形状
for shape in presentation.Slides[0].Shapes:
    # 判断形状是否为表格
    if isinstance(shape, ITable):
        table = shape

        # 设置表格样式
        table.StylePreset = TableStylePreset.LightStyle1Accent2
        
        # 使用循环替换特定单元格的数据
        for i, unusedItem in enumerate(table.ColumnsList):
            # 替换单元格中的数据
            table[i,2].TextFrame.Text = strs[i]
            
            # 高亮显示新数据
            table[i,2].TextFrame.TextRange.HighlightColor.Color = Color.get_Yellow()

# 保存结果文件
presentation.SaveToFile(outputFile, FileFormat.Pptx2013)

# 释放对象
presentation.Dispose()

Python 添加或编辑 PowerPoint 表格

申请临时 License

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。

在创建新 PDF 文档时,通过页面布局设计,我们可以在 PDF 页面上下空白处添加一些公司信息,图标,页码等信息作为页眉页脚,以增强 PDF 文档的外观效果和专业性。本文将介绍如何使用 Spire.PDF for Python 创建新 PDF 时添加页眉页脚。

安装 Spire.PDF for Python

本教程需要 Spire.PDF for Python 和 plum-dispatch v1.7.4。您可以通过以下 pip 命令将它们轻松安装到 Windows 中。

pip install Spire.PDF

如果您不确定如何安装,请参考此教程: 如何在 Windows 中安装 Spire.PDF for Python

背景知识

Spire.PDF for Python 提供 PdfPageTemplateElement 类,用于定义页面模板元素,并通过提供的方法 PdfPageTemplateElement.Graphics.DrawString(),PdfPageTemplateElement.Graphics.DrawLine(),PdfPageTemplateElement.Graphics.DrawImage() 等绘制相应的文本,线条,图片内容,同时还支持用 PdfGraphicsWidget.Draw() 绘制如 PdfPageCountField、PdfPageNumberField 等动态字段域到此模板元素。

PdfPageTemplateElement 模板元素上绘制内容,坐标体系设定如下:

Spire.PDF for Python 提供 PdfDocumentTemplate 类,用于 PDF 整个页面模板设计,上面定义的 PdfPageTemplateElement 页面模板元素可以直接应用到 PdfDocumentTemplate 页面模板上,PdfDocumentTemplate 页面模板可以应用1个或多个 PdfPageTemplateElement 页面模板元素,比如应用到 PdfDocumentTemplate.Top 和 PdfDocumentTemplate.Bottom 页面模板的上下区域实现 PDF 页眉,页脚的效果。

Spire.PDF 新建的 PDF 页面默认含有边距,PdfDocumentTemplate 页面模板初始化坐标设定如下:

Python  创建新PDF时添加页眉页脚

页边距的地方不能绘制内容,要应用 PdfPageTemplateElement 到 PdfDocumentTemplate 实现页眉页脚效果,可以先重置 PDF 页面边距为0,这样新建 PDF 页面 PdfDocumentTemplate 页面模板坐标体系会依据 PdfPageTemplateElement 设置的大小调整,例如:

Python  创建新PDF时添加页眉页脚

Python 创建新 PDF 时添加页眉

以下是使用 Spire.PDF for Python 创建新 PDF 时实现在页眉添加文本、图片以及线条:

第一部分:自定义方法 CreateHeaderTemplate() 设计页眉模板元素

第二部分:创建 PDF 文档对象并调用上面自定义方法添加页眉

  • Python
from spire.pdf.common import *
from spire.pdf import *

#定义CreateHeaderTemplate()方法
def CreateHeaderTemplate(doc, pageSize, margins):
    #创建指定大小的页眉模板
    headerSpace = PdfPageTemplateElement(pageSize.Width, margins.Top)
    headerSpace.Foreground = True
    doc.Template.Top = headerSpace

    #初始化x,y 坐标点
    x = margins.Left
    y = 0.0

    # 设置字体,画刷,画笔,文本对齐格式
    font = PdfTrueTypeFont("宋体", 10.0, PdfFontStyle.Italic, True)
    brush = PdfBrushes.get_Gray()
    pen = PdfPen(PdfBrushes.get_Gray(), 1.0)
    leftAlign = PdfTextAlignment.Left

    # 加载页眉图片并获取图片point高宽值
    headerImage = PdfImage.FromFile("header.png")
    width = headerImage.Width
    height = headerImage.Height
    unitCvtr = PdfUnitConvertor()
    pointWidth = unitCvtr.ConvertUnits(width, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point)
     pointHeight = unitCvtr.ConvertUnits(height, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point)

    # 在指定位置绘制页眉图片
    headerSpace.Graphics.DrawImage(headerImage, headerSpace.Width-x-pointWidth, headerSpace.Height-pointFeight)

    # 在指定位置绘制页眉文本
    headerSpace.Graphics.DrawString("成都冰蓝科技有限公司\nwww.e-iceblue.cn", font, brush, x, headerSpace.Height-font.Height*2, PdfStringFormat(leftAlign))
    
    # 在指定位置绘制页眉线条
    headerSpace.Graphics.DrawLine(pen, x, margins.Top, pageSize.Width - x,  margins.Top)

    
# 创建 PdfDocument 对象
doc = PdfDocument()

# 设置页面大小和边距
pageSize =PdfPageSize.A4()
doc.PageSettings.Size = pageSize
doc.PageSettings.Margins = PdfMargins(0.0)

# 新建PdfMargins对象用于设置页眉,页脚及左右模板大小
margins = PdfMargins(50.0, 50.0, 50.0, 50.0)
doc.Template.Left = PdfPageTemplateElement(margins.Left, pageSize.Height-margins.Bottom-margins.Top)
doc.Template.Right = PdfPageTemplateElement(margins.Right, pageSize.Height-margins.Bottom-margins.Top)
doc.Template.Bottom = PdfPageTemplateElement(pageSize.Width, margins.Bottom)

# 调用 CreateHeaderTemplate()添加页眉
CreateHeaderTemplate(doc, pageSize, margins)

# 按以上设置添加页面
page = doc.Pages.Add()

# 定义页面内容要使用的字体,画刷
font = PdfTrueTypeFont("宋体", 14.0, PdfFontStyle.Regular, True)
brush = PdfBrushes.get_Blue()

# 绘制文本内容到页面
text = "Spire.PDF 添加页眉示例"
page.Canvas.DrawString(text, font, brush, 0.0, 20.0)

# 将文档保存为 PDF 格式
doc.SaveToFile("结果.pdf", FileFormat.PDF)

# 释放文档对象
doc.Close()

Python  创建新PDF时添加页眉页脚

Python 创建新 PDF 时添加页脚

以下是使用 Spire.PDF for Python 创建新 PDF 时实现在页脚添加文本、线条以及页码内容:

第一部分:自定义方法 CreateFooterTemplate() 设计页脚模板元素

第二部分:创建 PDF 文档对象并调用上面自定义方法添加页脚

  • Python
from spire.pdf.common import *
from spire.pdf import *

#定义CreateFooterTemplate()方法
def CreateFooterTemplate(doc, pageSize, margins):
    # 创建指定大小的页脚模板
    footerSpace = PdfPageTemplateElement(pageSize.Width, margins.Bottom)
    footerSpace.Foreground = True
    doc.Template.Bottom = footerSpace

    #初始化x,y 坐标点
    x = margins.Left
    y = 0.0

    # 设置字体,画刷,画笔,文本对齐格式
    font = PdfTrueTypeFont("宋体", 12.0, PdfFontStyle.Italic, True)
    brush = PdfBrushes.get_Gray()
    pen = PdfPen(PdfBrushes.get_Gray(), 1.0)
    leftAlign = PdfTextAlignment.Left

     # 在指定位置绘制页脚线条
    footerSpace.Graphics.DrawLine(pen, x, y, pageSize.Width - x, y)

    # 在指定位置绘制页脚文本
    footerSpace.Graphics.DrawString("邮箱:sales @e-iceblue.com\n电话:028-81705109 ", font, brush, x, y, PdfStringFormat(leftAlign))
    
    # 创建页码编号和总页数字段域
    number = PdfPageNumberField()
    count = PdfPageCountField()
    listAutomaticField = [number, count]

    # 创建复合字段域并设置字符串格式进行绘制
    compositeField = PdfCompositeField(font, PdfBrushes.get_Gray(), "第{0}页共{1}页", listAutomaticField)
    compositeField.StringFormat = PdfStringFormat(PdfTextAlignment.Right, PdfVerticalAlignment.Top)
    size = font.MeasureString(compositeField.Text)
    compositeField.Bounds = RectangleF(pageSize.Width -x-size.Width, y, size.Width, size.Height)
    newTemplate = compositeField
    templateGraphicsWidget = PdfGraphicsWidget(newTemplate.Ptr)
    templateGraphicsWidget.Draw(footerSpace.Graphics)

    
# 创建 PdfDocument 对象
doc = PdfDocument()

# 设置页面大小和边距
pageSize =PdfPageSize.A4()
doc.PageSettings.Size = pageSize
doc.PageSettings.Margins = PdfMargins(0.0)

# 新建PdfMargins对象用于设置页眉,页脚及左右模板大小
margins = PdfMargins(50.0, 50.0, 50.0, 50.0)
doc.Template.Left = PdfPageTemplateElement(margins.Left, pageSize.Height-margins.Top-margins.Bottom)
doc.Template.Right = PdfPageTemplateElement(margins.Right, pageSize.Height-margins.Top-margins.Bottom)
doc.Template.Top = PdfPageTemplateElement(pageSize.Width, margins.Top)

# 调用 CreateFooterTemplate()添加页脚
CreateFooterTemplate(doc, pageSize, margins)

# 按以上设置添加页面
page = doc.Pages.Add()

# 创建页面内容要使用的字体,画刷
font = PdfTrueTypeFont("宋体", 14.0, PdfFontStyle.Regular, True)
brush = PdfBrushes.get_Blue()

# 绘制文本内容到页面
text = "Spire.PDF 添加页脚示例"
page.Canvas.DrawString(text, font, brush, 0.0, pageSize.Height-margins.Bottom-margins.Top-font.Height-20)

# 将文档保存为 PDF 格式
doc.SaveToFile("结果.pdf", FileFormat.PDF)

# 释放文档对象
doc.Close()

Python  创建新PDF时添加页眉页脚

申请临时 License

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。

Python PDF 转 HTML 图文教程

将 PDF 内容转换为 HTML,不仅能够让文档在网页上轻松访问,还能显著提升可用性、搜索性和跨设备兼容性。无论您是在开发 PDF 查看器、自动化文档工作流,还是进行内容的在线发布,使用 Python 将 PDF 转换为 HTML 都能有效提升用户体验。

本教程将详细介绍如何使用 Python 将 PDF 转换为 HTML,从基础的转换操作到进阶的自定义设置,再到基于流的输出方式。每个部分都附有实用的代码示例,帮助您快速理解和完成 PDF 到 HTML 的转换。

目录

为什么要将 PDF 转换为 HTML?

HTML(超文本标记语言)是网页内容的基础语言。将 PDF 转换为 HTML,能够让文档内容在网页上更加方便地浏览、编辑和索引。将 PDF 导出为 HTML 的主要优点包括:

  • 提升网页可访问性:HTML 能在所有浏览器中原生显示。
  • 搜索引擎优化(SEO):HTML 内容比 PDF 更容易被搜索引擎索引。
  • 响应式布局:HTML 页面能自适应不同设备和屏幕尺寸。
  • 增强互动性:HTML 支持样式、脚本等功能,增强用户互动体验。
  • 免插件查看:无需安装额外的 PDF 查看插件。

安装 Python PDF 转 HTML 转换库

在将 PDF 转换为 HTML之前,您需要安装支持处理 PDF 文档并导出为HTML 格式的库。在本教程中,我们将使用 Spire.PDF for Python,它是一个高性能的 PDF 库,支持多种PDF 文档处理和转换功能,并且不依赖第三方软件。

安装Spire.PDF for Python

您可以通过 pip 安装 Spire.PDF for Python,只需在终端中执行以下命令:

pip install Spire.PDF

该命令将自动下载并安装最新版本的 Spire.PDF 包及其依赖项。

如果您需要安装帮助,可以参考这篇教程:如何在 Windows 中安装 Spire.PDF for Python。

PDF 转 HTML 基础示例

Spire.PDF 提供了 SaveToFile() 方法,可以轻松地将整个 PDF 文档快速导出为 HTML 格式。此方法能够保留 PDF 文档的原始布局和结构,使得转换后的 HTML 文件在网页上呈现出与原始 PDF 一样的效果。

以下是一个基本的 PDF 转 HTML 的代码示例:

from spire.pdf.common import *
from spire.pdf import *

# 初始化 PdfDocument 对象
doc = PdfDocument()

# 加载 PDF 文件
doc.LoadFromFile("示例.pdf")

# 将 PDF 转换并保存为 HTML
doc.SaveToFile("output/Pdf转Html.html", FileFormat.HTML)

# 关闭文档
doc.Close()

下图展示了转换前的 PDF 文件和生成后的 HTML 文件效果:

Python 将 PDF 转换为 HTML

自定义 PDF 到 HTML 输出效果

如果您希望在转换过程中对 HTML 输出进行更精细的控制,可以使用 SetPdfToHtmlOptions() 方法进行设置。该方法提供了多个参数,允许您定制转换效果,包括图像嵌入、每个文件输出的页面数量以及 SVG 图像的质量等。

以下是主要参数及其功能:

参数 类型 描述
useEmbeddedSvg bool 如果为 True,则嵌入 SVG 图像
useEmbeddedImg bool 如果为 True,则嵌入图片(仅在 useEmbeddedSvg 设置为 False 时生效)
maxPageOneFile bool 限制每个 HTML 文件仅输出一页内容(仅在 useEmbeddedSvg 设置为 False 时生效)
useHighQualityEmbeddedSvg bool 启用高分辨率的 SVG 图像(仅在 useEmbeddedSvg 设置为 True 时生效)

代码示例:

from spire.pdf.common import *
from spire.pdf import *

# 初始化 PdfDocument 对象
doc = PdfDocument()

# 加载 PDF 文件
doc.LoadFromFile("示例.pdf")

# 获取转换设置
options = doc.ConvertOptions

# 自定义转换:使用图像嵌入,每个文件一页
options.SetPdfToHtmlOptions(False, True, 1, False)

# 保存 PDF 为自定义选项的 HTML 文件
doc.SaveToFile("output/PDF转HTML设置选项.html", FileFormat.HTML)

# 关闭文档
doc.Close()

将 PDF 保存为 HTML 流

在 Web 或云应用中,您可能更希望将 HTML 输出写入流(例如通过 HTTP 提供服务),而不是直接保存到文件系统。此时,您可以使用 SaveToStream() 方法来实现这一需求。

代码示例:

from spire.pdf.common import *
from spire.pdf import *

# 初始化 PdfDocument 对象
doc = PdfDocument()

# 加载 PDF 文件
doc.LoadFromFile("示例.pdf")

# 创建流来保存 HTML 输出
fileStream = Stream("output/PDF转HTML流.html")

# 将 PDF 保存为 HTML 流
doc.SaveToStream(fileStream, FileFormat.HTML)

# 关闭流和文档
fileStream.Close()
doc.Close()

总结

使用 Python 将 PDF 转换为 HTML 是让文档更好地适配网页并提升互动性的理想方式。通过 Spire.PDF for Python,您可以全面掌控转换过程,无论是简单导出,还是嵌入图像、SVG,甚至流式输出等高级选项,都可以轻松实现。

常见问题解答

Q1: 如何将受密码保护的 PDF 转换为 HTML?

A1: 使用 Spire.PDF,您可以通过 doc.LoadFromFile("file.pdf", "password") 打开受密码保护的 PDF,并将其成功转换为 HTML 格式。

Q2: Spire.PDF 支持将多页 PDF 转换为 HTML 吗?

A2: 支持。默认情况下,Spire.PDF 会将 PDF 文件中的所有页面转换为 HTML。您还可以通过 maxPageOneFile 参数设置每个 HTML 文件显示多少页,以满足不同需求。

Q3: 转换后的 HTML 文件会保留 PDF 中的图像和字体吗?

A3: 会的,Spire.PDF 会根据您的转换设置(如图像或 SVG 嵌入)尽可能保留图像和字体,确保 HTML 输出与原 PDF 的视觉效果一致。

获取免费许可证

如果您希望在没有评估限制的情况下全面体验 Spire.PDF for Python 的功能,可以申请免费的 30 天试用许可证。

在 PowerPoint 中对形状进行分组有助于简化复杂的编辑任务,尤其适用于批量修改格式或定位。分组后可一次性调整整体,大大提升效率;而取消分组则能恢复对单个形状的独立操控,便于进行精细化编辑与个性化设置。本文将指导如何运用 Spire.Presentation for Python 在 PowerPoint 中实现形状的分组与取消分组。

安装 Spire.Presentation for Python

本教程需要 Spire.Presentation for Python 和 plum-dispatch v1.7.4。您可以通过以下 pip 命令将它们轻松安装到 Windows 中。

pip install Spire.Presentation

如果您不确定如何安装,请参考此教程: 如何在 Windows 中安装 Spire.Presentation for Python

Python 分组 PowerPoint 中的形状

Spire.Presentation for Python 提供了 ISlide.GroupShapes(shapeList: List) 方法,用于在特定幻灯片上组合两个或多个形状。具体操作步骤如下:

  • Python
from spire.presentation import *

# 创建一个Presentation对象
ppt = Presentation()

# 获取演示文稿中的第一张幻灯片
slide = ppt.Slides[0]

# 添加一个填充为天蓝色的矩形
rectangle = slide.Shapes.AppendShape(ShapeType.Rectangle, RectangleF.FromLTRB (250, 180, 450, 220))
rectangle.Fill.FillType = FillFormatType.Solid
rectangle.Fill.SolidColor.KnownColor = KnownColors.SkyBlue

# 设置矩形边框线宽为0.1单位
rectangle.Line.Width = 0.1

# 添加一个填充为浅粉色的丝带形状
ribbon = slide.Shapes.AppendShape(ShapeType.Ribbon2, RectangleF.FromLTRB (290, 155, 410, 235))
ribbon.Fill.FillType = FillFormatType.Solid
ribbon.Fill.SolidColor.KnownColor = KnownColors.LightPink

# 设置矩形边框线宽为0.1单位
ribbon.Line.Width = 0.1

# 将这两个形状添加到列表中
shape_list = []
shape_list.append(rectangle)
shape_list.append(ribbon)

# 组合列表中的形状
slide.GroupShapes(shape_list)

# 保存文档
ppt.SaveToFile("组合.pptx", FileFormat.Pptx2013)

# 释放对象
ppt.Dispose()

Python 分组或取消分组形状

Python 取消分组 PowerPoint 中的形状

要取消 PowerPoint 文档中的组合形状,您可以遍历文档中的所有幻灯片以及每张幻灯片上的所有形状,找出已分组的形状并使用 ISlide.Ungroup(groupShape: GroupShape) 方法将其取消组合。具体的步骤如下:

  • Python
from spire.presentation import *

# 创建一个Presentation类的对象
ppt = Presentation()

# 加载一个包含组合形状的PowerPoint文档
ppt.LoadFromFile("组合.pptx")

# 遍历文档中的所有幻灯片
for i in range(ppt.Slides.Count):
    slide = ppt.Slides[i]
    
    # 遍历该幻灯片上的所有形状
    for j in range(slide.Shapes.Count):
        shape = slide.Shapes[j]
        
        # 判断是否为组合形状
        if isinstance(shape, GroupShape):
            groupShape = shape     
                   
            # 取消组合该组合形状
            slide.Ungroup(groupShape)

# 保存文档
ppt.SaveToFile("取消组合.pptx", FileFormat.Pptx2013)

# 释放对象
ppt.Dispose()

Python 分组或取消分组形状

申请临时 License

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。