ImageMagick(1) 转换PDF文件至图像

2023-11-10 11:30
文章标签 图像 转换 pdf imagemagick

本文主要是介绍ImageMagick(1) 转换PDF文件至图像,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

OS: Win10,Linux
相关软件:
(1)cmder(WIndows使用)
(2)ghostscript(转换PDF需要调用,WIndows好像不需要,Linux通过apt install ghostscript即可)
(3)ImageMagick ,官网下载或者apt下载安装


2019-05-26更新

在Ubuntu18.04中使用convert命令转换pdf会报如下错误:

$ convert -verbose -density 300 blog.pdf demo.png
convert-im6.q16: not authorized `blog.pdf' @ error/constitute.c/ReadImage/412.
convert-im6.q16: no images defined `demo.png' @ error/convert.c/ConvertImageCommand/3258.

网址:https://github.com/ImageMagick/ImageMagick/issues/1310 最后的回答给出了解答方案:编辑文件/etc/ImageMagick-6/policy.xml第76行,修改为

<policy domain="coder" rights="read|write" pattern="PDF" />

在这里插入图片描述
本文实现使用ImageMagick中的convert命令将PDF文件转换为图像文件(png,jpg等),需要掌握的基本工具/命令有sort和convert。

convert

先介绍convert命令,详细可以参照官网,网站https://imagemagick.org/script/examples.php 列出了convert的不同例子。
命令行选项有几种不同的形式:

  • Image Setting
    在这里插入图片描述
  • Image Operator
    在这里插入图片描述
  • Image Channel Operator
    在这里插入图片描述
  • Image Sequence Operator
    在这里插入图片描述
  • Image Geometry
    在这里插入图片描述

-append:从上至下合并图像(Image Sequence Operator)
+append:从左至右合并图像(Image Sequence Operator)
-flip: 垂直翻转
-flop: 水平翻转

convert test.pdf demo.png

如果pdf文件有n页的话,前面步骤会生成n张图片,图片名称分别为demo-0.png,demo-1.png,…,demo-(n-1).png,通过默认参数得到的图像分辨率为72dpi(dots per inch),可以通过修改参数-density 实现:

convert -density 300 test.pdf demo.png

300dpi分辨率已经可以接受了。

如果想要转换pdf中的某一页或者部分页,可以执行下面命令:

convert -density 300 test.pdf[0] demo.png

test.pdf[0]表示第一页,注意变换是从0开始的。

sort

前面得到n张demo-开头的文件,如果直接通过命令

convert demo-*.png -append all.png

其顺序会无法保证,得不到想要的效果,需要先人为进行排序,Linux和Win下操作游戏不同。

Linux

建议参考该命令手册:man sort

ls *png | sort -nbr -k 1.5 |convert @- -append all.png

sort的常用参数及作用:
-n:根据数值排列顺序
-b:忽略开头空白字符
-d:只考虑空白和字母顺序
-r:反向顺序
-k POS1,POS2:
引用一段话进行解释该参数:

where POS1 is the starting field position, and POS2 is the ending
field position. Each field position, in turn, is defined as: F.C
…where F is the field number and C is the character within that
field to begin the sort comparison.

使用key参数,可以用来利用不同的field来排列,每个field以空格隔开,像前面文件名demo-0.png,这里只有一个field,我想在这个field的第6个数值字符开始为排列依据,忽略前面5个字符,那么参数就为-k 1.5,表示排列依据为第一个field第6个字符开始,多个filed的情况一般出现在文件中的数据排列,例如有一个文件data.txt,其里面的数据有:

01 Joe Sr.Designer 
02 Marie Jr.Developer 
03 Albert Jr.Designer 
04 Dave Sr.Developer

这样就可以通过参数k实现不同field(每个空格间隔的字符串为一个field)的排序

Windows

Windows环境中笔者使用的是cmder终端,其命令如下:

ls *.png | sort /+7 | convert @- -append all.png

因为在Windows中调用的是windows系统自检的sort命令,其语法在官网网址:https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-xp/bb491004(v=technet.10) 进行了详细介绍,/+7表示从第7个字符开始作排序比较,Linux下是第6个开始比较,这点是有差别的。

这篇关于ImageMagick(1) 转换PDF文件至图像的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/382388

相关文章

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方

利用Python脚本实现批量将图片转换为WebP格式

《利用Python脚本实现批量将图片转换为WebP格式》Python语言的简洁语法和库支持使其成为图像处理的理想选择,本文将介绍如何利用Python实现批量将图片转换为WebP格式的脚本,WebP作为... 目录简介1. python在图像处理中的应用2. WebP格式的原理和优势2.1 WebP格式与传统

Python中图片与PDF识别文本(OCR)的全面指南

《Python中图片与PDF识别文本(OCR)的全面指南》在数据爆炸时代,80%的企业数据以非结构化形式存在,其中PDF和图像是最主要的载体,本文将深入探索Python中OCR技术如何将这些数字纸张转... 目录一、OCR技术核心原理二、python图像识别四大工具库1. Pytesseract - 经典O

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

java Long 与long之间的转换流程

《javaLong与long之间的转换流程》Long类提供了一些方法,用于在long和其他数据类型(如String)之间进行转换,本文将详细介绍如何在Java中实现Long和long之间的转换,感... 目录概述流程步骤1:将long转换为Long对象步骤2:将Longhttp://www.cppcns.c

C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式

《C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式》Markdown凭借简洁的语法、优良的可读性,以及对版本控制系统的高度兼容性,逐渐成为最受欢迎的文档格式... 目录为什么要将文档转换为 Markdown 格式使用工具将 Word 文档转换为 Markdown(.

在Java中将XLS转换为XLSX的实现方案

《在Java中将XLS转换为XLSX的实现方案》在本文中,我们将探讨传统ExcelXLS格式与现代XLSX格式的结构差异,并为Java开发者提供转换方案,通过了解底层原理、性能优势及实用工具,您将掌握... 目录为什么升级XLS到XLSX值得投入?实际转换过程解析推荐技术方案对比Apache POI实现编程

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

C/C++的OpenCV 进行图像梯度提取的几种实现

《C/C++的OpenCV进行图像梯度提取的几种实现》本文主要介绍了C/C++的OpenCV进行图像梯度提取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录预www.chinasem.cn备知识1. 图像加载与预处理2. Sobel 算子计算 X 和 Y

c/c++的opencv图像金字塔缩放实现

《c/c++的opencv图像金字塔缩放实现》本文主要介绍了c/c++的opencv图像金字塔缩放实现,通过对原始图像进行连续的下采样或上采样操作,生成一系列不同分辨率的图像,具有一定的参考价值,感兴... 目录图像金字塔简介图像下采样 (cv::pyrDown)图像上采样 (cv::pyrUp)C++ O