[Linux基础]8. linux下脚本将pdf转各图片并合成长图

2023-05-16

"你也有不看星星"

  • 1. 将PDF的每一页转换为图片
  • 2. 将转换后的多张图片合并为一张长图
  • 3. 完整脚本

任务叙述:已经有一个很长的pdf,要在linux上用脚本合成一张长图,如果由程序完成将PDF转换为长图,必须要实现两个功能:

将PDF的每一页转换为图片
将转换后的多张图片合并为一张长图

1. 将PDF的每一页转换为图片

基本就是第二句话,将生成的图片放在tmp…的文件夹下

mkdir tmp-pdf-page
## 将pdf转换为多张png
gs -sDEVICE=pngalpha -o "./tmp-pdf-page/$filename-%d.png" -r144 "$pdfname";

2. 将转换后的多张图片合并为一张长图

  • 将多张图片合并为一张,每张图片直接添加50像素间隔,最后
  • 将图片尺寸设置1080宽度后裁掉第一张和最后一张的边框,并
  • 进行锐化处理后输出为jpg。
convert ./tmp-pdf-page/$filename-*.png \
    -background  white  \
    -bordercolor white  \
    -border  0x50     \
    -append        \
    -shave   0x50  \
    -resize  1080  \
    -quality 85    \
    -sharpen 0x1.0 \
$filename-dest.jpg

3. 完整脚本

#!/bin/bash

pdfname="文件名称.pdf"
filename="${pdfname%%.*}"

## 创建临时文件夹存储每张pdf页面对应的图片
mkdir tmp-pdf-page

## 将pdf转换为多张png
gs -sDEVICE=pngalpha -o "./tmp-pdf-page/$filename-%d.png" -r144 "$pdfname";

## 将多张图片合并为一张,每张图片直接添加50像素间隔,最后
# 将图片尺寸设置1080宽度后裁掉第一张和最后一张的边框,并
# 进行锐化处理后输出为jpg。
# 参考资料:

convert ./tmp-pdf-page/$filename-*.png \
    -background  white  \
    -bordercolor white  \
    -border  0x50     \
    -append        \
    -shave   0x50  \
    -resize  1080  \
    -quality 85    \
    -sharpen 0x1.0 \
$filename.jpg

## 删除单张pdf文件对应的图片
rm -rf ./tmp-pdf-page
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[Linux基础]8. linux下脚本将pdf转各图片并合成长图 的相关文章

  • vector 超出范围后不清除内存

    我遇到了以下问题 我不确定我是否错了或者它是一个非常奇怪的错误 我填充了一个巨大的字符串数组 并希望在某个点将其清除 这是一个最小的例子 include
  • 两种情况或 if 哪个更快? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我必须制作一个 非常 轻的脚本 它将接受用户的选项并调用脚本中的函数来执行一些任务 现在我可以使用 IF 和 CASE 选项 但我想知道两
  • CentOS:无法安装 Chromium 浏览器

    我正在尝试在 centOS 6 i 中安装 chromium 以 root 用户身份运行以下命令 cd etc yum repos d wget http repos fedorapeople org repos spot chromium
  • Linux:在文件保存时触发 Shell 命令

    我想在修改文件时自动触发 shell 命令 我认为这可以通过注册 inotify 挂钩并调用来在代码中完成system 但是是否有更高级别的 bash 命令可以完成此任务 尝试 inotify 工具 我在复制链接时遇到问题 抱歉 但 Git
  • Linux:如何从特定端口发送TCP数据包?

    如何打开原始套接字以从特定 TCP 端口发送 我希望所有连接始终来自临时端口以下的一系列端口 如果您正在使用raw套接字 然后只需在数据包标头中填写正确的 TCP 源端口即可 相反 如果您使用 TCP 套接字接口 socket connec
  • 使用 sh 运行 bash 脚本

    我有 bash 脚本 它需要 bash 另一个人尝试运行它 sh script name sh 它失败了 因为 sh 是他的发行版中 dash 的符号链接 ls la bin sh lrwxrwxrwx 1 root root 4 Aug
  • jpegtran 优化而不更改文件名

    我需要优化一些图像 但不更改它们的名称 jpegtran copy none optimize image jpg gt image jpg 但是 这似乎创建了 0 的文件大小 当我对不同的文件名执行此操作时 大小仍然完全相同 怎么样 jp
  • 如何通过保持目录结构完整来同步路径中匹配模式的文件?

    我想将所有文件从服务器 A 复制到服务器 B 这些文件在不同级别的文件系统层次结构中具有相同的父目录名称 例如 var lib data sub1 sub2 commonname filetobecopied foo var lib dat
  • C语言中如何通过内存地址映射函数名和行号?

    如何用 GCC 中的内存地址映射回函数名称和行号 即假设一个 C 语言原型 void func Get the address of caller maybe this could be avoided MemoryAddress get
  • 为arm构建WebRTC

    我想为我的带有arm926ej s处理器的小机器构建webrtc 安装 depot tools 后 我执行了以下步骤 gclient config http webrtc googlecode com svn trunk gclient s
  • SSE:跨页边界的未对齐加载和存储

    我在页面边界旁边执行未对齐加载或存储之前读过某处 例如使用 mm loadu si128 mm storeu si128内在函数 代码应首先检查整个向量 在本例中为 16 个字节 是否属于同一页 如果不属于同一页 则切换到非向量指令 我知道
  • 多处理:仅使用物理核心?

    我有一个函数foo它消耗大量内存 我想并行运行多个实例 假设我有一个有 4 个物理核心的 CPU 每个核心有两个逻辑核心 我的系统有足够的内存来容纳 4 个实例foo并行但不是 8 个 此外 由于这 8 个核心中的 4 个是逻辑核心 我也不
  • 合并两个(或更多)PDF

    背景 我需要为我的销售人员提供每周报告包 该包包含几个 5 10 个水晶报告 Problem 我想允许用户运行所有报告并且只运行单个报告 我想我可以通过创建报告然后执行以下操作来做到这一点 List
  • 我的线程图像生成应用程序如何将其数据传输到 GUI?

    Mandelbrot 生成器的缓慢多精度实现 线程化 使用 POSIX 线程 Gtk 图形用户界面 我有点失落了 这是我第一次尝试编写线程程序 我实际上并没有尝试转换它的单线程版本 只是尝试实现基本框架 到目前为止它是如何工作的简要描述 M
  • 如何通过ssh检查ubuntu服务器上是否存在php和apache

    如何通过ssh检查Ubuntu服务器上apache是 否安装了php和mysql 另外如果安装的话在哪个目录 如果安装了其他软件包 例如 lighttpd 那么它在哪里 确定程序是否已安装的另一种方法是使用which命令 它将显示您正在搜索
  • Linux 上有关 getBounds() 和 setBounds() 的 bug_id=4806603 的解决方法?

    在 Linux 平台上 Frame getBounds 和 Frame setBounds 的工作方式不一致 这在 2003 年就已经有报道了 请参见此处 http bugs java com bugdatabase view bug do
  • 内核模式下的线程(和进程)与用户模式下的线程(和进程)有什么区别?

    我的问题 1 书中现代操作系统 它说线程和进程可以处于内核模式或用户模式 但没有明确说明它们之间有什么区别 2 为什么内核态线程和进程的切换比用户态线程和进程的切换花费更多 3 现在 我正在学习Linux 我想知道如何在LINUX系统中分别
  • waitpid() 的作用是什么?

    有什么用waitpid 它通常用于等待特定进程完成 或者如果您使用特殊标志则更改状态 基于其进程 ID 也称为pid 它还可用于等待一组子进程中的任何一个 无论是来自特定进程组的子进程还是当前进程的任何子进程 See here http l
  • 使用 mupdf android 库导航到特定页面

    我如何使用 muPDF 库导航到特定页面 或者有没有办法让图书馆不记得我最后在那个pdf文件中浏览的是哪一页 Uri uri Uri parse path Intent intent new Intent MainActivity getC
  • 确定我可以向文件句柄写入多少内容;将数据从一个 FH 复制到另一个 FH

    如何确定是否可以将给定数量的字节写入文件句柄 实际上是套接字 或者 如何 取消读取 我从其他文件句柄读取的数据 我想要类似的东西 n how much can I write w handle n read r handle buf n a

随机推荐

  • Python进阶书籍经典书有这样三本

    1 Python核心编程 xff08 第3版 xff09 Core Python Applications Programming xff08 3rd Edition xff09 美 Wesley Chun 著 xff0c 孙波翔 xff0
  • PID控制算法 无人机的精准悬停 机器人和机械臂的运动系统 飞机和火箭的姿态调整

    目录 应用数学公式机器人为例无人机为例PDI总结参考链接 应用 空调的温度控制 无人机的精准悬停 机器人和机械臂的运动系统 飞机和火箭的姿态调整 数学公式 机器人为例 无人机为例 P D I
  • Docker容器图形界面显示(运行GUI软件)的配置方法

    0 环境说明 Ubuntu 16 04 docker 1 35 1 Docker的 可视化 Docker本身的工作模式是命令行的 xff0c 因为主要的使用场景可能是做服务器后端方面的比较多 但有时候我们会有在docker容器里运行一些图形
  • 即时通讯 3

    即时通讯 3 内容待写
  • HMC5883L 磁力计校准

    原文地址 xff1a http blog sina com cn s blog 402c071e0102v8ie html 这里针对 HMC5883L 磁力计 的校准 xff0c 做一个简单讲解 欢迎交流 xff0c 新浪长沙 64 Wal
  • linux下如何编译c++工程项目

    首先 xff0c 你必须 有一 个Linux开发环境 xff0c 这样才能进行C 43 43 开发 笔者用的是安装在虚拟机中的Ubuntu 9 04 xff0c Ubuntu操作系统是没带C 43 43 编译器g 43 43 在连网的情况下
  • 【ROS程序】 --- 4-1. URDF-GAZEBO 文件介绍

    没人天赋异禀 xff0c 介绍两种实现对比发现 gaze中的urdf文件1 碰撞参数设置2 惯性矩阵设置3 颜色设置 介绍 在前边提过的rviz中 xff0c 只负责整体机器人的建模和运动 xff0c 而在gazebo中集成urdf文件则需
  • 【ROS机器人】 --- 2-2.slam建图保存

    山无拦 海无遮 xff01 前期准备建图I 运行机器人 gazebo II 建图文件编写III 配置rviz并保存1 添加机器人和雷达2 添加TF3 地图map4 保存配置 IV 控制运动建图V 保存地图1 map server2 保存查看
  • 【ROS机器人】 --- 2-4. 路径规划_move_base

    我回来啦 前期准备基础知识1 action通信2 代价地图及组成3 碰撞算法 文件详解及过程I 集成参数的launch文件II 配置文件1 costmap common params yaml2 global costmap params
  • 【ROS机器人】 --- 2-5.自主导航并slam建图

    压线才低头 前期准备基础知识编写launch文件执行流程最后重写launch文件 本节目标 xff1a 加载一张未知地图 xff0c 为机器人设置目标点 机器人会边走路 边建图 最后还可以用map server保存 实现 xff1a 打开g
  • [xdm+ip]ubuntu下载数据慢或者不通

    解决了从官网下载kitti数据集慢的问题 1 改ip 测ping2 更改 etc hosts文件3 使用xdm工具4 配置浏览器和xdm5 使用 环境 ubuntu20 04 问题 从kitti数据集官网下载数据集慢或不通的问题 使用过we
  • 【Docker】--5.docker图形化(享用主机的屏幕)

    心向骄阳万丈光 1 主机操作2 初始化容器3 注意查看效果 docker图形无法显示 网上流传两种方法解决 一种是lightdm 容器初始化好后 另一种是我亲测有用的这种 初始化容器时 1 主机操作 安装 span class token
  • [ros+python]无法rosrun 导入自定义.py文件的python可执行文件

    问题描述 在ROS环境下 自定义a py文件作为模块 被b py引用 rosrun b的时候疯狂报错 not found python文件可以单独用python编译器跑通过 放在rosrun下边就不对 解决办法 删除掉工作空间下之前编译残留
  • 【从kitti开始自动驾驶】--9.1 利用IMU/GPS测距并比较效果(jupyter)

    义勇添青史几段 1 基础知识1 1 角度计算1 2 距离计算 2 python程序编写2 1 大圆距离公式函数2 2 a GPS测距离2 2 b IMU测距离2 3 绘图2 4 效果展示2 5 结论 3 Measure distance源码
  • 【gdb调试器】gdb的调试参数和使用方法

    34 江山不负英雄泪 34 GDB调试器GDB主要功能常用调试命令参数 小例子测试gdb编译生成可执行文件调试查看 GDB调试器 GDB GNU Debugger 是一个用来调试C C 43 43 程序的功能强大的调试器 是linux系统开
  • 磁力计的基本工作原理

    此文详细讲解了 磁力计 的基本工作原理 干扰产生的原因以及如何校准 磁力计与倾角传感器如何结合使用等内容 原文地址 xff1a http www dzsc com data html 2010 11 29 87454 html 电子罗盘是一
  • Linux安装confluence

    一 准备工作 1 安装jdk 在官网下载Linux环境下的jdk1 8 xff1a https www oracle com technetwork java javase downloads jdk8 downloads 2133151
  • [ROS+catkin_make]编译100%后出现 unreference to ...的现象

    问题描述 catkin make编译100 后 突然出现unreference to 的情况 但是能定义过去 即根据VSCODE可以追踪过去问题解决 静态成员变量必须在类外初始化
  • 【linux基础】7.linux系统自定义应用名和应用图标

    34 懦弱之人毫无价值 34 1 做应用和图标1 1 测试和加入侧边栏 3 命令行重命名唤醒 任务叙述 xff1a 有一个x sh文件可以在命令行执行 sh x sh xff0c 这样太麻烦 将其做成app且配上logo xff0c 下次直
  • [Linux基础]8. linux下脚本将pdf转各图片并合成长图

    34 你也有不看星星 34 1 将PDF的每一页转换为图片2 将转换后的多张图片合并为一张长图3 完整脚本 任务叙述 xff1a 已经有一个很长的pdf xff0c 要在linux上用脚本合成一张长图 xff0c 如果由程序完成将PDF转换