《Python PDF 格式转换全攻略》

《Python PDF 格式转换全攻略》

  • 一、引言
  • 二、常见的 PDF 转文件格式方法
    • 1. PDF 转 Word
      • (一)、使用 pdf2docx 库
      • (二)、使用 PyMuPDF 库
      • (三)、使用 pdfminer 库
      • (四)、使用 PyPDF2 和 python-docx 库
      • (五)、使用 pdf2image 和 python-docx 库
      • (六)、使用 unoconv 和 LibreOffice
      • (七)、使用 PDFMiner 和 python-docx
    • 2. PDF 转图片
      • (一)、使用 PyMuPDF 库
      • (二)、使用 pdfplumber 库
      • (三)、使用 python-office 库
      • (四)、使用 pdf2image 库
    • 3. PDF 转 HTML
      • (一)、使用 PyMuPDF 库和 tqdm 库
      • (二)、使用 Spire.PDF for Python 库
  • 三、特殊的 PDF 转文件格式方法
    • 1. PDF 转 PDF/A 和 PDF/X
    • 2. PDF/A 转回 PDF
  • 四、安装所需库及注意事项
    • 1. PyPDF2
    • 2. pdf2docx
    • 3. PyMuPDF
    • 4. pdfminer
    • 5. python-docx
    • 6. unoconv 和 LibreOffice
    • 7. pdf2image
  • 五、总结
    • 1.PDF 转 Word
    • 2.PDF 转图片
    • 3.PDF 转 HTML
    • 4.特殊的 PDF 转文件格式方法
    • 5.安装所需库及注意事项

一、引言

在当今数字化时代,文件格式的多样性给人们的工作和生活带来了诸多挑战。而 Python 作为一种强大且广泛应用的编程语言,在文件格式转换中发挥着至关重要的作用。
随着信息技术的飞速发展,人们在不同场景下会接触到各种格式的文件。例如,在办公环境中,可能需要将 PDF 文件转换为其他可编辑格式以便进行内容修改和分享;在数据分析领域,需要将不同格式的文件统一转换为特定格式以便进行深入分析;在设计领域,也常常需要在不同的图像格式之间进行转换。Python 以其丰富的库和简洁的语法,为解决这些文件格式转换的问题提供了高效的解决方案。
特别是在 PDF 转文件格式这一特定需求上,Python 更是展现出了强大的实力。无论是将 PDF 转换为文本格式以便进行信息提取和分析,还是将其转换为图像格式以满足设计需求,Python 都能轻松应对。在实际工作中,很多场景都需要进行 PDF 转文件格式的操作。比如,学术研究人员需要将 PDF 格式的论文转换为可编辑的文本文件,以便进行文献综述和引用;企业在处理文档时,可能需要将 PDF 格式的报告转换为其他格式以便进行数据分析和展示。在生活中,人们也可能需要将 PDF 格式的电子书转换为其他格式以便在不同的设备上阅读。
总之,Python 在文件格式转换中的重要性不言而喻,而 PDF 转文件格式这一主题也具有广泛的实际应用价值。

二、常见的 PDF 转文件格式方法

1. PDF 转 Word

Python 提供了多种方法将 PDF 转换为 Word 文档,以下是一些常用的方法及步骤和注意事项。

(一)、使用 pdf2docx 库

首先,确保已经安装了该库:pip install pdf2docx。
接下来,将使用 pdf2docx 库进行 PDF 到 Word 的转换:

from pdf2docx import Converterdef pdf_to_word_pdf2docx(pdf_path, word_path):cv = Converter(pdf_path)cv.convert(word_path, start=0, end=None)cv.close()# 使用示例
pdf_to_word_pdf2docx('sample.pdf','output.docx')

在这个示例中,导入了 pdf2docx 库,创建了 Converter 对象,然后使用 convert 方法将 PDF 转换为 Word。请确保已安装 pdf2docx 库,并替换’sample.pdf’ 为 PDF 文件路径,‘output.docx’ 为输出的 Word 文件路径。

(二)、使用 PyMuPDF 库

确保已经安装了该库:pip install pymupdf。
接下来,将使用 PyMuPDF 库进行 PDF 到 Word 的转换:

import fitzdef pdf_to_word_pymupdf(pdf_path, word_path):doc = fitz.open(pdf_path)text = ''for page_num in range(doc.page_count):page = doc[page_num]text += page.get_text()with open(word_path,'w', encoding='utf-8') as f:f.write(text)# 使用示例
pdf_to_word_pymupdf('sample.pdf','output.docx')

使用 fitz.open 打开 PDF 文件,遍历每一页并提取文本。最后,将提取的文本写入 Word 文档。请确保已安装 PyMuPDF 库,并替换’sample.pdf’ 为 PDF 文件路径,‘output.docx’ 为输出的 Word 文件路径。

(三)、使用 pdfminer 库

确保已经安装了该库:pip install pdfminer.six。
接下来,将使用 pdfminer 库进行 PDF 到 Word 的转换:

from pdfminer.high_level import extract_textdef pdf_to_word_pdfminer(pdf_path, word_path):text = extract_text(pdf_path)with open(word_path,'w', encoding='utf-8') as f:f.write(text)# 使用示例
pdf_to_word_pdfminer('sample.pdf','output.docx')

使用 pdfminer 库的 extract_text 函数提取 PDF 文本,并将其写入 Word 文档。请确保已安装 pdfminer 库,并替换’sample.pdf’ 为你的 PDF 文件路径,‘output.docx’ 为输出的 Word 文件路径。

(四)、使用 PyPDF2 和 python-docx 库

确保已经安装了这两个库:pip install PyPDF2 python-docx。
接下来,将使用 PyPDF2 提取 PDF 文本,并使用 python-docx 创建 Word 文档:

import PyPDF2
from docx import Documentdef pdf_to_word_pypdf2_python_docx(pdf_path, word_path):with open(pdf_path,'rb') as pdf_file:pdf_reader = PyPDF2.PdfFileReader(pdf_file)document = Document()for page_num in range(pdf_reader.numPages):page = pdf_reader.getPage(page_num)text = page.extractText()document.add_paragraph(text)document.save(word_path)# 使用示例
pdf_to_word_pypdf2_python_docx('sample.pdf','output.docx')

使用 PyPDF2 库提取 PDF 文本,然后使用 python-docx 库创建 Word 文档。请确保已安装 PyPDF2 和 python-docx 库,并替换’sample.pdf’ 为 PDF 文件路径,‘output.docx’ 为输出的 Word 文件路径。

(五)、使用 pdf2image 和 python-docx 库

确保已经安装了这两个库:pip install pdf2image python-docx。
接下来,将使用 pdf2image 将 PDF 转换为图像,然后使用 python-docx 创建 Word 文档:

from pdf2image import convert_from_path
from docx import Documentdef pdf_to_word_pdf2image_python_docx(pdf_path, word_path):images = convert_from_path(pdf_path)document = Document()for i, image in enumerate(images):image.save(f'page_{i +1}.png')document.add_picture(f'page_{i +1}.png')document.save(word_path)# 使用示例
pdf_to_word_pdf2image_python_docx('sample.pdf','output.docx')

使用 pdf2image 将 PDF 转换为图像,然后将每个图像插入 python-docx 的 Word 文档中。请确保已安装 pdf2image 和 python-docx 库,并替换’sample.pdf’ 为 PDF 文件路径,‘output.docx’ 为输出的 Word 文件路径。

(六)、使用 unoconv 和 LibreOffice

在使用这种方法之前,请确保已安装 LibreOffice。
Ubuntu/Debian 安装 LibreOffice:sudo apt-get install libreoffice。
CentOS 安装 LibreOffice:sudo yum install libreoffice。
macOS 安装 LibreOffice:brew install libreoffice。
然后,安装 unoconv:pip install unoconv。
接下来,将使用 unoconv 将 PDF 转换为 Word:

import subprocessdef pdf_to_word_unoconv(pdf_path, word_path):subprocess.run(['unoconv','-f','docx','-o', word_path, pdf_path])# 使用示例
pdf_to_word_unoconv('sample.pdf','output.docx')

使用 subprocess 模块调用 unoconv 命令来进行 PDF 到 Word 的转换。请确保已安装 LibreOffice 并配置了 unoconv。替换’sample.pdf’ 为 PDF 文件路径,‘output.docx’ 为输出的 Word 文件路径。

(七)、使用 PDFMiner 和 python-docx

首先,确保已安装 PDFMiner 库。
在这个示例中,使用 pdfminer 库的 extract_text 函数提取 PDF 文本,并使用 python-docx 库创建 Word 文档。
注意事项:
由于 PDF 文件可能包含非常复杂的格式和布局,所以转换可能无法完全保留原始 PDF 文件的格式。因此,可能需要对生成的 Word 文档进行手动编辑以使其符合我们的需求。

2. PDF 转图片

Python 中有多种方法可以将 PDF 转换为图片,以下是一些常用的方法及设置图片分辨率等参数的技巧。

(一)、使用 PyMuPDF 库

PyMuPDF 简介:
该三方库从命名形式中就可以看出,PyMuPDF 是 MuPDF 的 Python 接口形式。而 MuPDF 是一个轻量级的 PDF、XPS 和电子书查看器。MuPDF 由软件库、命令行工具和各种平台的查看器组成。这个工具很小,速度很快,而且很完整。它支持多种文档格式,如 PDF、XPS、OpenXPS、CBZ、EPUB 和 FictionBook 2。使用 PyMuPDF,你可以访问扩展名为 “.pdf”、“.xps”、“.oxps”、“.cbz”、“.fb2” 或 “.epub”。此外,大约 10 种流行的图像格式也可以像文档一样处理 “.png”,“.jpg”,“.bmp”,“.tiff” 等。
安装:
可以通过 Python pip 官方方式安装,也可以下载离线 wheels 包进行安装。支持平台:Windows、Linux、Mac OS。
pip 安装命令:pip install PyMuPDF。
导入命令:import fitz。
关于命名 fitz 的说明:这个库的标准 Python 导入语句是import fitz。这是有历史原因的: MuPDF 的原始渲染库被称为 Libart。在 Artifex 软件获得 MuPDF 项目后,开发的重点转移到编写一种新的现代图形图书馆称为 “Fitz”。Fitz 最初是作为一个研发项目,以取代老化的 Ghostscript 图形库,但却成为了 MuPDF 的渲染引擎。
使用方法:
验证 pymupdf 模块是否安装成功:
import fitz
print(fitz.doc)

加载 PDF 文件:
doc = fitz.open(“/test/demo.pdf”)

获取 Document 属性和方法:
获取 pdf 页数:
pageCount = doc.page_count
print("pdf 页数: ", pageCount)

获取 pdf 元数据:
metaData = doc.metadata
print("pdf 元数据: ", metaData)

获取 pdf 目录信息:
toc = doc.get_toc()
print(“pdf 目录:”, toc)

Page 加载方法:
page = doc.load_page(pno) # 加载每页数据
page = doc[pno] # 加载每页数据

页面展示 / 页面图像保存到文件中:
pix = page.get_pixmap()
print(“打印页面图像对象:”, pix)
pix.pil_save(“page-%i.png” % page.number)

PDF 保存为图片完整代码:

import os
import fitzdef covert2pic(file_path, zoom, png_path):doc = fitz.open(file_path)total = doc.page_countfor pg in range(total):page = doc[pg]zoom = int(zoom)rotate = int(0)trans = fitz.Matrix(zoom / 100.0, zoom / 100.0).prerotate(rotate)pm = page.get_pixmap(matrix=trans, alpha=False)if not os.path.exists(png_path):os.mkdir(png_path)save = os.path.join(png_path, '%s.png' %(pg+1))pm.save(save)doc.close()if __name__ == "__main__":pdfPath ='demo.pdf'imagePath ='./imgs'covert2pic(pdfPath,200, imagePath)

(二)、使用 pdfplumber 库

pdfplumber 简介:
pdfplumber 也是一个可以处理 pdf 格式信息的库,可以查找关于每个文本字符、矩阵、和行的详细信息,也可以对表格进行提取并进行可视化调试。主要功能:
可返回 csv 或 json 格式的信息:pdf 级和页面级的元数据以及字典的嵌套属性。
可以指定页面以及页面范围进行解析:以空格分隔、1 索引的页面列表或带连字符的页面范围。例如,1, 11 - 15 将返回第 1、11、12、13、14 和 15 页的数据。
可以指定解析的类型:比如 char、rect、line、curve、image 或 annot 等,默认为所有可用。最终返回的是一个 pdfplumber.Page 对象。
安装:
跟 PyMuPDF 一样,支持使用 pip 安装,安装命令:pip install pdfplumber。
导入命令:import pdfplumber。
使用方法:
pdfplumber 有 2 个基础类:PDF 和 Page。PDF 用来处理整个文档,Page 用来处理整个页面。
读取 pdf 文件,并输出 pdf 文件的基础信息:

import pdfplumberpdf_info = pdfplumber.open('demo.pdf')
meta_data = pdf_info.metadata  # pdf 的基础信息
page_con = len(pdf_info.pages)  # 获取 pdf 的总页数
print('pdf 文件的基础信息:\n', meta_data)
print('pdf 共%s 页' % page_con)

pdfplumber 转图片完整代码:

import pdfplumberdef covert2pic_v2(file_path, png_path):with pdfplumber.open(file_path) as pdf:for i, page in enumerate(pdf.pages[:2]):im = page.to_image(resolution=150)save = os.path.join(png_path, '%s.png' % (int(i) + 1))im.save(save)print('----分割线,第%d 页----' % (int(i) + 1))

(三)、使用 python-office 库

Python-office 简介:
Python-office 是一个 Python 自动化办公第三方库,能解决大部分自动化办公的问题。而且每个功能只需一行代码,不需要小白用户学习 Python 知识,做到了真正的开箱即用。
安装:
安装命令pip install python-office。

(四)、使用 pdf2image 库

安装:
首先,我们需要安装 pdf2image 库,这可以通过以下命令在命令行中进行安装:pip install pdf2image。
导入必要的库:
在您的 Python 脚本中,首先导入所需的库,包括我们即将使用的 pdf2image 库:from pdf2image import convert_from_path。
指定 PDF 文件路径:
将要转换为图片的 PDF 文件放置在您选择的路径下,并将该路径赋值给变量 pdf_path:pdf_path =‘test.pdf’。
请确保将 test.pdf 替换为您实际的 PDF 文件路径。
将 PDF 转换为图片:
使用convert_from_path函数从指定的 PDF 文件中提取图像,并将它们存储在一个名为 images 的列表中:images = convert_from_path(pdf_path)。
保存图像为图片文件:
遍历 images 列表,将每个图像保存为 JPEG 格式的图片文件。我们使用循环为每个图像文件命名,命名格式为 page_i.jpg,其中 i 表示页码:
for i, image in enumerate(images):
image.save(f’page_{i +1}.jpg’,‘JPEG’)

设置图片分辨率等参数的技巧:
在使用 PyMuPDF 和 pdfplumber 库时,可以通过调整相关参数来设置图片分辨率。例如,在 PyMuPDF 中,使用page.get_pixmap方法时,可以通过Matrix参数来调整分辨率。在 pdfplumber 中,可以使用to_image方法的resolution参数来设置分辨率。具体的调整方法需要根据实际需求进行尝试和调整。

3. PDF 转 HTML

通过特定的 Python 库将 PDF 转换为 HTML 格式可以增强文档可访问性,使文档可搜索,同时增强文档在不同场景中的实用性。以下是使用 Python 将 PDF 转换为 HTML 的方法。

(一)、使用 PyMuPDF 库和 tqdm 库

前言最近想做一个小的功能,将 PDF 文字提取,并转换为 HTML 页面,但苦苦找寻没有合适好用简单的方法。Google 一下,马上知道,接下来就是学习的结果,分享给大家,以免踩坑含泪分享,希望大家喜欢,直接上代码本文仅用于知识分享!
第一个版本,简单实现了 HTML 输出:

import fitz
from tqdm import tqdmdef pdf2html(input_path, html_path):doc = fitz.open(input_path)for page in tqdm(doc):html_content = page.getText('html')print("开始输出 html 文件")with open(html_path, 'w', encoding='utf8', newline="") as fp:fp.write(html_content)input_path = r'G:\\back\\pyfile\\翻译\\pdf_translate-master\\3.pdf'  # 如果报错 就用绝对路径
html_path = r'G:\\back\\pyfile\\翻译\\pdf_translate-master\\input.html'
pdf2html(input_path, html_path)

第二个版本,优化了 HTML 输出的样式(做了居中对齐):

import fitz
from tqdm import tqdmdef pdf2html(input_path, html_path):doc = fitz.open(input_path)print(doc)html_content = "<!DOCTYPE html><html lang=\"en\"><head><meta charset=\"UTF-8\"><title>Title</title></head><body style=\"display: flex;justify-content: center;flex-direction: column;background: #0e0e0e;align-items: center;\">"for page in tqdm(doc):html_content += page.getText('html')print("开始输出 html 文件")html_content += "</body></html>"with open(html_path, 'w', encoding='utf8', newline="") as fp:fp.write(html_content)input_path = r'/Users/guoyi/Desktop/report123.pdf'  # 如果报错 就用绝对路径
html_path = r'/Users/guoyi/Desktop/report123.html'
pdf2html(input_path, html_path)

安装:pip install PyMuPDF或者pip3 install PyMuPDF,pip install tqdm或者pip3 install tqdm。

(二)、使用 Spire.PDF for Python 库

PDF 文件是共享和分发文档的常用选择,但提取和再利用 PDF 文件中的内容可能会非常麻烦。而利用 Python 将 PDF 文件转换为 HTML 是解决此问题的理想方案之一,这样做可以增强文档可访问性,使文档可搜索,同时增强文档在不同场景中的实用性。此外,HTML 格式使得搜索引擎能够对内容进行索引,从而更有可能在网络上被发现。借助 Python 的灵活性和易用性,无论是初学者还是有经验的开发人员都

三、特殊的 PDF 转文件格式方法

1. PDF 转 PDF/A 和 PDF/X

PDF/A 和 PDF/X 是两种具有特定用途的 PDF 格式。PDF/A 是一种用于长期存档的 PDF 格式,旨在确保文档的内容和格式在未来的访问中保持不变。例如,对于法律文件或档案记录,将其转换为 PDF/A 格式是明智之选。PDF/X 是一种用于印刷输出的 PDF 格式,旨在确保文档在打印时的准确性和一致性,通常包括高分辨率图像和准确的颜色信息。若需将文件发送给印刷商打印,转换为 PDF/X 格式可避免出现打印错误和质量问题。
使用 Python 将 PDF 转换为 PDF/A 和 PDF/X 可以借助 Spire.PDF for Python 库来实现。PDF/A 是 ISO 定义的 PDF 存档标准,目前共有三种规范:PDF/A-1、PDF/A-2 和 PDF/A-3。每种规范包含两种一致性级别(A 或 B),适用于不同的需求。Spire.PDF for Python 支持将 PDF 转换为 PDF/A-1a、2a、3a、1b、2b、3b,转换代码如下:

from spire.pdf.common import *
from spire.pdf import *# 创建 PdfStandardsConverter 类的对象,并传入一个 PDF 文档作为参数
converter = PdfStandardsConverter("考核.pdf")# 将 PDF 转为 PDF/A-1a
converter.ToPdfA1A("PdfA1A.pdf")# 将 PDF 转为 PDF/A-1b
converter.ToPdfA1B("PdfA1B.pdf")# 将 PDF 转为 PDF/A-2a
converter.ToPdfA2A("PdfA2A.pdf")# 将 PDF 转为 PDF/A-2b
converter.ToPdfA2B("PdfA2B.pdf")# 将 PDF 转为 PDF/A-3a
converter.ToPdfA3A("PdfA3A.pdf")# 将 PDF 转为 PDF/A-3b
converter.ToPdfA3B("PdfA3B.pdf")

除了 PDF/A 格式外,Spire.PDF for Python 还支持将 PDF 转为 PDF/X-1a:2001 标准。该标准于 2001 年发布,是 PDF/X-1 的一个子标准,被广泛应用于印刷和出版领域。转换代码如下:

from spire.pdf.common import *
from spire.pdf import *# 创建 PdfStandardsConverter 类的对象,并传入一个 PDF 文档作为参数
converter = PdfStandardsConverter("考核.pdf")# 将 PDF 转为 PDF/X-1a:2001
converter.ToPdfX1A2001("PDF转PdfX1a.pdf")

2. PDF/A 转回 PDF

Spire.PDF for Python 提供的 PDF/A 转 PDF 的实现思路是新建一个标准 PDF 文件,然后将 PDF/A 文件的内容绘制到新的 PDF 文件中。实现代码如下:

from spire.pdf.common import *
from spire.pdf import *# 加载 PDF/A 文件
pdf = PdfDocument()
pdf.LoadFromFile("ToPdfA1A.pdf")# 新建一个标准 PDF 文件
newPdf = PdfNewDocument()
newPdf.CompressionLevel = PdfCompressionLevel.none# 在新建 PDF 文件中添加页面,并将 PDF/A 文件的内容绘制到新建 PDF 的相应页面上
for i in range(pdf.Pages.Count):page = pdf.Pages.get_Item(i)size = page.SizenewPdf = newDoc.Pages.Add(size, PdfMargins(0.0))page.CreateTemplate().Draw(newPdf, 0.0, 0.0)# 保存 PDF 文件
fileStream = Stream("PdfA转Pdf.pdf")
newDoc.Save(fileStream)
fileStream.Close()
newDoc.Close(True)

四、安装所需库及注意事项

在进行 PDF 格式转换时,需要安装一些特定的 Python 库。以下是对各种库的介绍以及安装过程中的注意事项。

1. PyPDF2

简介:PyPDF2 是一个免费的、开源的纯 Python PDF 库,能够拆分、合并、裁剪和转换 PDF 文件的页面。它还可以为 PDF 文件添加自定义数据、查看选项和密码,也可以从 PDF 中检索文本和元数据。
安装方法:使用pip install -i https://mirrors.aliyun.com/pypi/simple PyPDF2进行安装。
注意事项:PyPDF2 项目将回到它的根。PyPDF2 == 3.0.X 将是 PyPDF2 的最后一个版本。开发将继续使用 pypdf==3.1.0。

2. pdf2docx

安装方法:通过pip install pdf2docx进行安装。
注意事项:在处理包含复杂格式或大量图像的 PDF 文件时可能效果不佳,转换后的 Word 文档可能需要进一步的格式调整。

3. PyMuPDF

简介:PyMuPDF 是 MuPDF 的 Python 接口形式。MuPDF 是一个轻量级的 PDF、XPS 和电子书查看器,支持多种文档格式。
安装方法:可以通过 Python pip 官方方式安装,也可以下载离线 wheels 包进行安装。支持平台包括 Windows、Linux、Mac OS。安装命令为pip install PyMuPDF。
注意事项:安装过程中可能会遇到网络问题导致安装失败,可以尝试使用不同的源进行安装,如清华源等。在使用时,需要注意通过import fitz导入库,这是有历史原因的。同时,在调整图片分辨率等参数时,可以通过page.get_pixmap方法的Matrix参数来调整分辨率。

4. pdfminer

安装方法:在 Python 3 中安装pip install pdfminer3k,在 Python 2 中安装pip install pdfminer。
注意事项:由于 PDF 文件可能包含非常复杂的格式和布局,所以转换可能无法完全保留原始 PDF 文件的格式,可能需要对生成的文档进行手动编辑。

5. python-docx

安装方法:使用pip install python-docx安装。
注意事项:在与不同版本的 Python 搭配使用时,可能需要注意兼容性问题。例如,在 Python3.11 中使用时,需要安装最新版本的 docx 库以确保兼容性。

6. unoconv 和 LibreOffice

安装方法:
对于 Ubuntu/Debian,安装 LibreOffice:sudo apt-get install libreoffice。
对于 CentOS,安装 LibreOffice:sudo yum install libreoffice。
对于 macOS,安装 LibreOffice:brew install libreoffice。
安装 unoconv:pip install unoconv。
注意事项:使用这种方法之前,请确保已安装 LibreOffice 并配置了 unoconv。

7. pdf2image

安装方法:在命令行中使用pip install pdf2image进行安装。
注意事项:在将 PDF 转换为图片时,可以通过调整相关参数来设置图片分辨率。具体的调整方法需要根据实际需求进行尝试和调整。
在安装这些库时,需要注意库的版本兼容性问题。不同版本的库可能会有不同的功能和接口,可能会导致代码无法正常运行。同时,在安装过程中可能会遇到网络问题、依赖库冲突等问题,需要根据具体情况进行解决。

五、总结

Python 在 PDF 转文件格式方面提供了多种强大且灵活的方法。通过各种库和工具,我们可以实现 PDF 到 Word、图片、HTML 等多种格式的转换,满足不同场景下的需求。

1.PDF 转 Word

使用 Python 进行 PDF 转 Word 有多种方法,如使用pdf2docx、PyMuPDF、pdfminer、PyPDF2和python-docx、pdf2image和python-docx、unoconv和LibreOffice、PDFMiner和python-docx等库。这些方法各有特点,但在转换过程中可能会因 PDF 文件的复杂格式和布局而无法完全保留原始格式,需要对生成的 Word 文档进行手动编辑。同时,不同的库在安装和使用过程中也有一些注意事项,如版本兼容性、网络问题等。

2.PDF 转图片

Python 可以通过PyMuPDF、pdfplumber、python-office、pdf2image等库将 PDF 转换为图片。在使用这些库时,可以通过调整相关参数来设置图片分辨率。例如,在PyMuPDF中,可以使用page.get_pixmap方法的Matrix参数来调整分辨率;在pdfplumber中,可以使用to_image方法的resolution参数来设置分辨率。此外,不同的库在安装和使用过程中也有各自的特点和注意事项。

3.PDF 转 HTML

通过PyMuPDF和tqdm库、Spire.PDF for Python库可以将 PDF 转换为 HTML 格式。这种转换可以增强文档可访问性,使文档可搜索,同时增强文档在不同场景中的实用性。在使用这些库时,需要注意安装方法和一些参数的设置,以确保转换效果符合需求。

4.特殊的 PDF 转文件格式方法

PDF 转 PDF/A 和 PDF/X:使用Spire.PDF for Python库可以将 PDF 转换为 PDF/A 和 PDF/X 格式,这两种格式具有特定的用途,如 PDF/A 用于长期存档,PDF/X 用于印刷输出。在转换过程中,可以根据需要选择不同的规范和一致性级别。
PDF/A 转回 PDF:Spire.PDF for Python库提供了将 PDF/A 转回 PDF 的方法,通过新建一个标准 PDF 文件,然后将 PDF/A 文件的内容绘制到新的 PDF 文件中实现转换。

5.安装所需库及注意事项

在进行 PDF 格式转换时,需要安装一些特定的 Python 库。不同的库在安装和使用过程中有不同的注意事项,如版本兼容性、网络问题、依赖库冲突等。在安装过程中,需要根据具体情况进行解决,以确保代码能够正常运行。
总之,Python 在 PDF 转文件格式方面具有很大的灵活性和实用性。根据实际需求选择合适的转换方式,并注意安装和使用过程中的注意事项,可以提高工作效率,满足不同场景下的文件格式转换需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/482811.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flink双流Join

在离线 Hive 中&#xff0c;我们经常会使用 Join 进行多表关联。那么在实时中我们应该如何实现两条流的 Join 呢&#xff1f;Flink DataStream API 为我们提供了3个算子来实现双流 join&#xff0c;分别是&#xff1a; join coGroup intervalJoin 下面我们分别详细看一下这…

Vue3学习宝典

1.ref函数调用的方式生成响应式数据&#xff0c;可以传复杂和简单数据类型 <script setup> // reactive接收一个对象类型的数据 import { reactive } from vue;// ref用函数调用的方式生成响应式数据&#xff0c;可以传复杂和简单数据类型 import { ref } from vue // 简…

C++(4个类型转换)

1. C语言中的类型转换 1. 隐式 类型转换&#xff1a; 具有相近的类型才能进行互相转换&#xff0c;如&#xff1a;int,char,double都表示数值。 2. 强制类型转换&#xff1a;能隐式类型转换就能强制类型转换&#xff0c;隐式类型之间的转换类型强相关&#xff0c;强制类型转换…

《DSL-FIQA》论文翻译

《DSL-FIQA: Assessing Facial Image Quality Via Dual-Set Degradation Learning and Landmark-Guided Transformer》 原文链接&#xff1a;DSL-FIQA: Assessing Facial Image Quality via Dual-Set Degradation Learning and Landmark-Guided Transformer | IEEE Conference…

mac终端自定义命令打开vscode

1.打开终端配置文件 open -e ~/.bash_profile终端安装了zsh&#xff0c;那么配置文件是.zshrc&#xff08;打开zsh配置&#xff0c;这里举&#x1f330;使用zsh&#xff09; sudo open -e ~/.zshrc 2.在zshrc配置文件中添加新的脚本&#xff08;这里的code就是快捷命令可以进…

vue基础之6:计算属性、姓名案例、简写计算属性

欢迎来到“雪碧聊技术”CSDN博客&#xff01; 在这里&#xff0c;您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者&#xff0c;还是具有一定经验的开发者&#xff0c;相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导&#xff0c;我将…

Qt桌面应用开发 第十天(综合项目二 翻金币)

目录 1.主场景搭建 1.1重载绘制事件&#xff0c;绘制背景图和标题图片 1.2设置窗口标题&#xff0c;大小&#xff0c;图片 1.3退出按钮对应关闭窗口&#xff0c;连接信号 2.开始按钮创建 2.1封装MyPushButton类 2.2加载按钮上的图片 3.开始按钮跳跃效果 3.1按钮向上跳…

【从零开始的LeetCode-算法】35. 搜索插入位置

给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2示例 2: 输入: …

掌上单片机实验室 — RT - Thread+ROS2 浅尝(26)

前面化解了Micro_ROS通讯问题&#xff0c;并在 RT-Thread Studio 环境下&#xff0c;使用Micro_ROS软件包中的例程&#xff0c;实现了STM32F411CE核心板和ROS2主机的通讯。之后还尝试修改例程 micro_ros_sub_twist.c &#xff0c;实现了接收 turtle_teleop_key 所发出的 turtle…

展现运动类型

同样&#xff0c;我们通过函数的方式将运动类型插入我们的HTML代码中 _renderWorkout(workout) {let html <li class"workout workout-${workout.type}" data-id"${workout.id}"><h2 class"workout__title">${workout.description}…

vscode 怎么下载 vsix 文件?

参考&#xff1a;https://marketplace.visualstudio.com/items?itemNameMarsCode.marscode-extension 更好的办法&#xff1a;直接去相关插件的 github repo 下载老版本 https://github.com/VSCodeVim/Vim/releases?page5 或者&#xff0c;去 open-vsx.org 下载老版本 点击这…

python 练习题

目录 1&#xff0c;输入三个整数&#xff0c;按升序输出 2&#xff0c;输入年份及1-12月份&#xff0c;判断月份属于大月&#xff0c;小月&#xff0c;闰月&#xff0c;平月&#xff0c;并输出本月天数 3&#xff0c;输入一个整数&#xff0c;显示其所有是素数因子 4&#…

我的第一个创作纪念日 —— 梦开始的地方

前言 时光荏苒&#xff0c;转眼间&#xff0c;我已经在CSDN这片技术沃土上耕耘了365天 今天&#xff0c;我迎来了自己在CSDN的第1个创作纪念日&#xff0c;这个特殊的日子不仅是对我过去努力的肯定&#xff0c;更是对未来持续创作的激励 机缘 回想起初次接触CSDN&#xff0c;那…

Rook入门:打造云原生Ceph存储的全面学习路径(上)

文章目录 一.Rook简介二.Rook与Ceph架构2.1 Rook结构体系2.2 Rook包含组件2.3 Rook与kubernetes结合的架构图如下2.4 ceph特点2.5 ceph架构2.6 ceph组件 三.Rook部署Ceph集群3.1 部署条件3.2 获取rook最新版本3.3 rook资源文件目录结构3.4 部署Rook/CRD/Ceph集群3.5 查看rook部…

【Gitlab】CICD使用minio作为分布式缓存

1、安装minio 下载适合自己系统版本的安装文件https://dl.min.io/server/minio/release/windows-amd64/ yum install xxx.rpm 2、配置/etc/profile export MINIO_ACCESS_KEYroot [ui登录账号] export MINIO_SECRET_KEYminioDev001 [ui登录密码] export MINIO_OPTS"…

奇数求和ᅟᅠ

奇数求和 C语言代码C 代码Java代码Python代码 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 计算非负整数 m 到 n&#xff08;包括m 和 n &#xff09;之间的所有奇数的和&#xff0c;其中&#xff0c;m 不大于 n&#xff0c;且n 不大于30…

Django 视图层

from django.shortcuts import render, HttpResponse, redirectfrom django.http import JsonResponse1. render: 渲染模板 def index(request):print(reverse(index))return render(request, "index.html")return render(request, index.html, context{name: lisi})…

手机实时提取SIM卡打电话的信令声音-蓝牙电话如何适配eSIM卡的手机

手机实时提取SIM卡打电话的信令声音 --蓝牙电话如何适配eSIM卡的手机 一、前言 蓝牙电话的海外战略中&#xff0c;由于海外智能手机市场中政策的差异性&#xff0c;对内置eSIM卡的手机进行支持是非常合理的需求。Android系列手机中&#xff0c;无论是更换通信运营商&#xf…

python3 + selenium 中用PIL获取全屏幕截图

获取当前屏幕截图非常简单&#xff0c;需要import PIL.ImageGrab。调用grab函数即可得到Image对象&#xff0c;显示图片如图所示。 高版本的PIL中的grab函数还提供有一些参数。要查看当前PIL包的版本&#xff0c;可以import然后查看其__version__属性。 如果是较高版本的PIL…

SpringBoot3 + Vue3 由浅入深的交互 基础交互教学2

目录 一、这篇文章是基础交互教学系列的续作 二、发送请求时&#xff0c;携带发送的数据json格式的参数&#xff1a;data 三、携带token请求头&#xff0c;进行JWT校验 四、实现throw抛出异常&#xff0c;并交互显示在前端的界面 一、这篇文章是基础交互教学系列的续作 大…