繁体   English   中英

用于合并 pdf 内文件夹中的所有图像文件的脚本

[英]Script to merge all image files from a folder inside a pdf

我经常需要在 pdf 中合并很多图像。 自然,我想自动化一点。 这是我需要的东西:

  • 无损合并到 pdf
  • 合并最常见的图像格式
  • 数字的自然排序( 1.jpg2.jpg10.jpg将按此顺序合并,而不是1.jpg 10.jpg 2.jpg
  • 可以处理文件名中的空格

我遇到了一个与我需要的完全一样的解决方案,但是对于名称中包含空格的文件,它会失败。

#!/bin/bash
convert `ls -v *.jpg *.jpeg *.JPG *.JPEG *.png *.PNG *.gif *.GIF *.tiff *.TIFF *.webp *.WEBP *.bmp *.BMP` compilation_images.pdf

在 shell 脚本方面,我完全是个菜鸟,所以如果我没有看到一个简单的解决方案,我提前道歉,但我自己找不到任何解决方案。

谢谢你的帮助。

正如您所发现的,尝试解析ls是错误的。 假设您使用的是 GNU 版本的实用程序,因为 linux 标记通常暗示,请尝试以下操作:

#!/usr/bin/env bash

# Turn on case-insensitive globs and make ones that
# don't match anything expand to nothing
shopt -s nocaseglob nullglob

readarray -d '' -t images < <(printf "%s\0" *.jpg *.jpeg *.png *.gif *.tiff *.webp *.bmp | sort -Vz)
convert "${images[@]}" compilation_images.pdf

它使用用 nul 字符分隔文件名的常见技巧,以便在使用排序的文件名填充bash数组时安全地处理空格。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM