📜  latex pdf 到 eps - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:43:51.635000             🧑  作者: Mango

将 LaTeX pdf 文件转换成 eps 的 Shell 脚本

若需要将 LaTeX 编译后得到的 pdf 文件转换成 eps 格式,可以使用 Ghostscript 命令行工具实现。

以下是一个 Shell 脚本,可以将指定目录下所有的 pdf 文件都转换成 eps 格式并保存在指定目录内。请确保已安装 Ghostscript 工具。

#!/bin/bash

# 指定 pdf 文件所在目录和 eps 文件保存目录
pdf_directory="/path/to/pdf/files"
eps_directory="/path/to/eps/files"

# 遍历 pdf 文件
for pdf_file in ${pdf_directory}/*.pdf; do
    # 从 pdf 文件路径中获取文件名(不含扩展名)
    file_name=$(basename "${pdf_file}" .pdf)
    # 转换成 eps 格式
    gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=eps2write -sOutputFile="${eps_directory}/${file_name}.eps" "${pdf_file}"
done

使用方法:将脚本保存成文件(如 convert_pdf_to_eps.sh)并赋予执行权限,然后在终端中执行即可,或者将脚本直接复制粘贴到终端中执行。脚本中需要将 pdf_directoryeps_directory 更改为实际路径。

以上脚本中:

  • -dSAFER 参数是为了限制 Ghostscript 的操作权限,避免出现安全问题;
  • -dBATCH 参数表示在所有文件处理完成后退出 Ghostscript,而不是等待用户手动退出;
  • -dNOPAUSE 参数表示在处理文件时不要停顿,而是一口气处理完;
  • -sDEVICE=eps2write 参数表示将文件转换成 eps 格式;
  • -sOutputFile= 参数指定输出文件的路径和文件名。

补充:若有部分 pdf 文件不需要转换成 eps 格式,可以在转换前加入判断,例如:

if [[ "${pdf_file}" == *"_no_eps.pdf" ]]; then
    # 文件名包含 "_no_eps" 的 pdf 文件不进行转换
    continue
fi

这样就可以跳过指定文件的转换了。

注意,本脚本只能将单页 pdf 文件转换成 eps,若需要将多页 pdf 文件的每一页都转换成 eps,可以使用 pdfseparate 命令将多页 pdf 文件分割成单页 pdf 文件,再使用本脚本分别转换每一页,最后使用 convert 命令将 eps 文件合并成一个多页 eps 文件。