批量svg转化为pdf脚本

使用场景:LaTeX 中无法直接使用 svg 图片,需要将图片转为 pdf 插入
前置要求:bash, inkscape 命令工具

bash脚本svg2pdf.sh

#!/bin/bash
# 从指定的输入目录中取出所有的 SVG 文件,然后转换为 PDF 文件
# 依赖:inkscape

# 默认输入和输出目录
in_dir=svg
out_dir=svg_out_pdf

# 解析命令行参数
while getopts "i:o:h" opt; do
  case $opt in
    i)
      in_dir=$OPTARG
      ;;
    o)
      out_dir=$OPTARG
      ;;
    h)
      echo "Usage: $0 [-i input_dir] [-o output_dir]" >&2
      exit 0
      ;;
    \?)
      echo "Invalid option: -$OPTARG" >&2
      exit 1
      ;;
    :)
      echo "Option -$OPTARG requires an argument." >&2
      exit 1
      ;;
  esac
done

mkdir -p "$out_dir"

# 只匹配svg后缀的文件
for file in "$in_dir"/*.svg; do
    base_name=$(basename "$file" .svg)
    # 检查输出目录中是否已经存在同名的 PDF 文件
    if [ ! -f "$out_dir/$base_name.pdf" ]; then
        # inkscape命令接口,将 SVG 文件转换为 PDF 文件
        inkscape -z -D --file="$file" --export-pdf="$out_dir/$base_name.pdf"
    else
        echo "Skipping $file: PDF file already exists"
    fi
done
bash svg2pdf.sh -h # 查看命令行使用
bash svg2pdf.sh -i input_dir -o output_dir # 使用示例

注意:因为转化速度较慢,所以会检查输出目录中时候已经存在转化过的文件,这些文件不会重复转化,如果有同名文件改变了,需要删除对应的输出文件重新运行脚本才能更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值