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

任务叙述:已经有一个很长的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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值