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

相关文章

Java实现将Markdown转换为纯文本

《Java实现将Markdown转换为纯文本》这篇文章主要为大家详细介绍了两种在Java中实现Markdown转纯文本的主流方法,文中的示例代码讲解详细,大家可以根据需求选择适合的方案... 目录方法一:使用正则表达式(轻量级方案)方法二:使用 Flexmark-Java 库(专业方案)1. 添加依赖(Ma

java导出pdf文件的详细实现方法

《java导出pdf文件的详细实现方法》:本文主要介绍java导出pdf文件的详细实现方法,包括制作模板、获取中文字体文件、实现后端服务以及前端发起请求并生成下载链接,需要的朋友可以参考下... 目录使用注意点包含内容1、制作pdf模板2、获取pdf导出中文需要的文件3、实现4、前端发起请求并生成下载链接使

基于Python开发PDF转PNG的可视化工具

《基于Python开发PDF转PNG的可视化工具》在数字文档处理领域,PDF到图像格式的转换是常见需求,本文介绍如何利用Python的PyMuPDF库和Tkinter框架开发一个带图形界面的PDF转P... 目录一、引言二、功能特性三、技术架构1. 技术栈组成2. 系统架构javascript设计3.效果图

Java实现将byte[]转换为File对象

《Java实现将byte[]转换为File对象》这篇文章将通过一个简单的例子为大家演示Java如何实现byte[]转换为File对象,并将其上传到外部服务器,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言1. 问题背景2. 环境准备3. 实现步骤3.1 从 URL 获取图片字节数据3.2 将字节数组

Java中数组转换为列表的两种实现方式(超简单)

《Java中数组转换为列表的两种实现方式(超简单)》本文介绍了在Java中将数组转换为列表的两种常见方法使用Arrays.asList和Java8的StreamAPI,Arrays.asList方法简... 目录1. 使用Java Collections框架(Arrays.asList)1.1 示例代码1.

基于Python实现一个PDF特殊字体提取工具

《基于Python实现一个PDF特殊字体提取工具》在PDF文档处理场景中,我们常常需要针对特定格式的文本内容进行提取分析,本文介绍的PDF特殊字体提取器是一款基于Python开发的桌面应用程序感兴趣的... 目录一、应用背景与功能概述二、技术架构与核心组件2.1 技术选型2.2 系统架构三、核心功能实现解析

基于Python开发PDF转Doc格式小程序

《基于Python开发PDF转Doc格式小程序》这篇文章主要为大家详细介绍了如何基于Python开发PDF转Doc格式小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用python实现PDF转Doc格式小程序以下是一个使用Python实现PDF转DOC格式的GUI程序,采用T

Python使用PIL库将PNG图片转换为ICO图标的示例代码

《Python使用PIL库将PNG图片转换为ICO图标的示例代码》在软件开发和网站设计中,ICO图标是一种常用的图像格式,特别适用于应用程序图标、网页收藏夹图标等场景,本文将介绍如何使用Python的... 目录引言准备工作代码解析实践操作结果展示结语引言在软件开发和网站设计中,ICO图标是一种常用的图像

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像

使用Python创建一个能够筛选文件的PDF合并工具

《使用Python创建一个能够筛选文件的PDF合并工具》这篇文章主要为大家详细介绍了如何使用Python创建一个能够筛选文件的PDF合并工具,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录背景主要功能全部代码代码解析1. 初始化 wx.Frame 窗口2. 创建工具栏3. 创建布局和界面控件4