关于EPS文件转PDF文件及PDF裁剪自动化的Shell脚本制作
- 前言
- 一、EPS文件转PDF文件
- 1. 过去的科研绘图方案
- 2. 未来的科研绘图方案
- 二、使用步骤
- 1. 单例操作
- a. 安装epstool
- b. 切除EPS文件白边并保存临时EPS文件
- d. 将EPS文件转换为PDF文件
- 2. 批处理操作
- a. Shell 脚本
- b. 使用说明
- 参考网站
前言
很快就要步入研二了,在写完一篇论文以后,即将进入第二篇论文写作时,察觉到之前的一篇论文还有许多可以改进的地方,一个方面就是绘图,一篇论文图画的好不好、能否吸引审稿人的眼球并获得其青睐是一个值得琢磨的问题,而在这种收益和付出正相关的事情上,就更应该投以关注。接下来不间断会更新一些科研方面的细节,比如绘图、制表诸如此类……(我又在挖新坑了)
一、EPS文件转PDF文件
EPS又名矢量图文件,是可插入Latex论文写作模板的一种文件格式。而更常见的是使用PDF格式文件,因为PDF一旦生成固定就不易被修改(相较Word、Txt这些文件而言)。
1. 过去的科研绘图方案
实际上在此之前的科研绘图过程中,本人的常规操作就是用python的matplotlib绘制图片并保存为PDF或者PNG文件。而保存为PDF后放到Latex论文中会出现一个问题,那就是所需的图表位于PDF页面正中央,四周都有白边,放到论文中就会显得图表有点小。因此需要对PDF进行剪裁。通过对PDF截图保存为图片,再将图片复制到一个只有一页的PPT(Power Point)中,同时设置好PPT页面大小和图片一致,最后另存为PDF文件即可完成裁剪。过程看上去有些繁琐,且这样保存的PDF存在另一个问题,PDF中的一些文字并不能再复制出来,因为其原本就是一张图片。而正常的PDF中的文字是可以被复制Copy的。
2. 未来的科研绘图方案
当然,读者可以使用WPS(需要付费)和Adobe等工具进行可视化裁剪。而手工裁剪的问题就是并不能很好地切除PDF白边,而且每次手动调整也是很麻烦的一件事情。因此接下来介绍的方法就是通过免费的工具用命令行的形式进行自动裁剪。
二、使用步骤
值得一提的是,本文都是这在Ubuntu这类Linux系统上进行的,如果是Windows操作系统可能并不适合。顺带一提,科研方面Ubuntu是必不可少的。有一些代码比如包含分布式的代码只能在Linux操作系统下进行,因为Windows没有Fork操作。
1. 单例操作
首先要在Ubuntu上安装相应工具包:epstool
a. 安装epstool
sudo apt-get install epstool
b. 切除EPS文件白边并保存临时EPS文件
以input_file.eps这个文件为例:
epstool --copy --bbox input_file.eps input_file.temp.eps
将结果暂时存为input_file.temp.eps
d. 将EPS文件转换为PDF文件
epstopdf --hires --outfile=output_file.pdf input_file.temp.eps
转换后在同目录下生成output_file.pdf文件即为最终我们要的结果。
如果这步执行出错就按照提示进行安装对应库,这里我被要求安装texlive-font-utils
sudo apt install texlive-font-utils
2. 批处理操作
上面是针对一个EPS文件,然而很多时候我们需要对多个文件进行批量转换,真正实现自动化一键式操作。这里就要使用到Shell脚本。
直接给出代码,然后再介绍使用方法。
a. Shell 脚本
使用vi eps2pdf.sh或者vim eps2pdf.sh创建一个新的Shell脚本文件。
源码已发布在github: https://github.com/Regan-Zhang/EPS2PDF
#!/bin/sh
for file in ./*;do # 遍历当前目录所有文件if [ "${file##*.}"x = "eps"x ];then # 如果文件后缀为eps,即为eps文件则进行如下操作echo "$file is eps file"filename=${file%.*} # 去除.eps后缀名echo "$filename"# 执行单例命令epstool --copy --bbox $file $filename.temp.eps epstopdf --hires --outfile=$filename.pdf $filename.temp.eps rm -f $filename.temp.eps # 删除临时文件fi
done
read -p "Press any key to end"
b. 使用说明
将EPS文件全部放到一个文件夹下,然后将eps2pdf.sh脚本也放到这个目录下。
然后进行当前目录的terminal终端窗口,输入
sh ./eps2pdf.sh
即可运行完成。
参考网站
ubuntu, eps转pdf以及切除白边
Mac党的福音:两行命令搞定eps转pdf以及切除白边
shell 切分文件名提取文件扩展名或提取文件名