逐页扫描,轻松实现:PDF如何变身高清图像? 您所在的位置:网站首页 poppler是什么 逐页扫描,轻松实现:PDF如何变身高清图像?

逐页扫描,轻松实现:PDF如何变身高清图像?

2024-04-28 15:21| 来源: 网络整理| 查看: 265

导语:

PDF文件是我们在日常工作和学习中常用的文档格式之一,但你知道吗?你可以将PDF文件转换为图像,让文档变得更加生动有趣。或者是防止别人对你文档的复制粘贴。

本篇博客将为你详细介绍如何将PDF转换为图像,开启全新的文档阅读体验。

什么是PDF转图像?

PDF转图像是一种将PDF文件的每一页内容转换为图像格式(如PNG、JPEG等)的处理方式。通过这种方式,你可以将静态的文档内容转化为生动的图像,防止别人对文字文档的复制粘贴,更易于与他人分享和呈现。

如何实现pdf转图像 使用pdf2image库

使用Python的pdf2image库,我们可以轻松实现PDF到图像的转换。

但需要注意的是:pdf2image 基于poppler-utils工具,它使用pdftoppm工具将PDF页面转换为图像。因此,在使用pdf2image之前,你需要确保已经安装了poppler-utils。

from pdf2image import convert_from_path def pdf_to_images(pdf_path, output_folder): pages = convert_from_path(pdf_path) for i, page in enumerate(pages): page.save(f'{output_folder}/page_{i + 1}.png', 'PNG') pdf_path = 'your_pdf_file.pdf' output_folder = 'output_images' pdf_to_images(pdf_path, output_folder) 使用PyMuPDF库进行PDF转图像

另一个强大的工具是PyMuPDF库,它允许我们更加灵活地操作PDF并转换为图像。

具体版如下: import datetime import os import fitz # fitz就是pip install PyMuPDF def pyMuPDF_fitz(pdfPath, imagePath): startTime_pdf2img = datetime.datetime.now() # 开始时间 print("imagePath=" + imagePath) pdfDoc = fitz.open(pdfPath) for pg in range(pdfDoc.pageCount): page = pdfDoc[pg] rotate = int(0) # 每个尺寸的缩放系数为1.3,这将为我们生成分辨率提高2.6的图像。 # 此处若是不做设置,默认图片大小为:792X612, dpi=96 zoom_x = 2 # (1.33333333-->1056x816) (2-->1584x1224) zoom_y = 2 mat = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate) pix = page.getPixmap(matrix=mat, alpha=False) if not os.path.exists(imagePath): # 判断存放图片的文件夹是否存在 os.makedirs(imagePath) # 若图片文件夹不存在就创建 pix.writePNG(imagePath + '/' + 'images_%s.png' % pg) # 将图片写入指定的文件夹内 endTime_pdf2img = datetime.datetime.now() # 结束时间 print('pdf2img时间=', (endTime_pdf2img - startTime_pdf2img).seconds) if __name__ == "__main__": # 1、PDF地址 pdfPath = r'../demo-scan.pdf' # 2、需要储存图片的目录 imagePath = './imgs' pyMuPDF_fitz(pdfPath, imagePath) 简化版如下: import fitz def pdf_to_images(pdf_path, output_folder): pdf_document = fitz.open(pdf_path) for pg in range(pdf_document.page_count): page = pdf_document[pg] pix = page.get_pixmap(matrix=fitz.Matrix(2, 2)) pix.save(f'{output_folder}/page_{pg + 1}.png') pdf_path = 'your_pdf_file.pdf' output_folder = 'output_images' pdf_to_images(pdf_path, output_folder) 开启全新阅读体验

通过将PDF转换为图像,你可以在不同场景下获得更好的阅读体验。你可以将图像用于演示、分享到社交媒体,甚至用于个人学习笔记。

也可以防止别人直接复制你的成果。

两种方式对比:

pdf2image 和 fitz(来自PyMuPDF库)都是用于在Python中处理PDF文件的工具。它们在功能和用法上有一些区别,以下是它们的主要区别和比较:

pdf2image:

功能特点:

pdf2image 是一个用于将PDF文件的页面转换为图像的Python库。它专注于将PDF页面转换为图像格式(如PNG、JPEG等),便于在其他应用中使用,如图像处理、OCR等。

依赖库:

pdf2image 基于poppler-utils工具,它使用pdftoppm工具将PDF页面转换为图像。因此,在使用pdf2image之前,你需要确保已经安装了poppler-utils。

使用简单:

pdf2image 提供了直观的API,易于使用。它可以从PDF文件中提取指定页面并将其转换为图像,非常适合基本的PDF转图像需求。

示例代码:

from pdf2image import convert_from_path images = convert_from_path('input.pdf') for i, image in enumerate(images): image.save(f'page_{i + 1}.png', 'PNG')

fitz(PyMuPDF库):

功能特点:

fitz 是 PyMuPDF 库的一部分,它是一个功能丰富的PDF处理库,支持阅读、编辑和转换PDF文档。除了转换为图像,fitz 还提供了许多其他PDF操作的功能,如文本提取、标注等。

独立性:

fitz 是 PyMuPDF 库的一部分,它不需要依赖外部工具。这使得在没有安装poppler-utils的情况下,仍然可以使用 fitz 进行PDF操作。

更多灵活性:

fitz 不仅可以将PDF页面转换为图像,还可以对PDF文档进行更复杂的操作,如获取页面信息、文本提取、页面合并、旋转、裁剪等。因此,如果你需要更多关于PDF的操作,fitz 是一个更强大的选择。

示例代码:

import fitz pdf_document = fitz.open('input.pdf') page = pdf_document[0] pix = page.get_pixmap(matrix=fitz.Matrix(2, 2)) pix.save('page_1.png') pdf_document.close()

综上所述,如果你只需要将PDF页面转换为图像,pdf2image 是一个更简单的选择。而如果你需要更多PDF操作的灵活性,如文本提取、标注等,那么fitz(PyMuPDF)提供了更广泛的功能。选择合适的工具取决于你的具体需求。

结语:

将PDF文件转换为图像是一个简单却强大的技巧,无论是与他人分享、演示,还是用于个人学习,PDF转图像都能为你带来全新的阅读体验。试试这些方法,开启文档的视觉之旅吧!

更多宝藏

🍇🍉🍊🍏🍋🍅🥝🥥🫒🫕🥗

视频推送看这里🤤: space.bilibili.com/1909782963

项目仓库看这里🤗: github.com/w-x-x-w gitee.com/w-_-x

公众号名称😮:编程启航

博客文章看这里🤭: blog.csdn.net/weixin_6265…



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有