6. 脚本详解

本章将对本教程中所用到之脚本进行讲解。

本项目所使用到的脚本存放在 util 文件夹之中,它们为:

  • mk_folder.bat

    用于创建文件夹。

    注解

    脚本命名问题

    在Windows当中,如果把批处理脚本命名为所要调用的系统命令名,很可能会导致死循环。 故此命名此脚本为 mk_folder.bat 而不是 mkdir.bat

  • gs_split_pdf.bat

    调用 ghostscript 把PDF分割为单页。

  • pdf_to_svg.bat

    把多页PDF转换为分页的SVG。

  • pdf_to_png.bat

    把多页PDF转换为分页的PNG。

  • pdf_to_emf.bat

    把PDF转换为EMF(仅一页)。

  • pdf_to_eps.bat

    把PDF转换为的EPS(仅一页)。

警告

路径

在设置 documentclass 时,需要注意输入的路径参数。本教程一律使用相对路径。

./ 是指当前所在路径。

../ 是指往上移一层目录。

6.1. mk_folder.bat 详解

mk_folder.bat 的内容如下:

1
2
3
4
5
6
@echo off
REM this file is not call "mkdir" to avoid run errors

set dst_dir=%1

if not exist %dst_dir%/NUL mkdir %dst_dir%

此脚本用于在CMD当前所在之目录为根来创建文件夹。如果该文件夹已存在,则不创建而退出。

此脚本接受一个参数。此参数为将要创建的文件夹路径。

此脚本之使用方法如下:

mk_folder <要创建之文件夹路径>

此脚本的语法和 mkdir 命令的语法一致。此处给出一个例子,假设要在目前的目录下创建一个名为 a 的文件夹,其下有一个子目录,名为 b,而 b 之下又有一个子目录,名为 c

mk_folder a\b\c

若文件夹路径中有空格,则需要把路径放在两个双引号之中,如:

mk_folder "a b\c d"

6.2. gs_split_pdf.bat 详解

gs_split_pdf.bat 的内容如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
@echo off
REM use 64-bit ghosescript to split a pdf

set temp_folder=%1
set outfile=%2
set infile=%3

REM the gswinXXc.exe does not prompt the ghostscript window, the ones without the "c" do prompt

gswin64c -sDEVICE=pdfwrite -dSAFER -dNOPAUSE -dBATCH -sOutputFile=%temp_folder%/%outfile% %infile%

此脚本用于把输入的PDF分割为单页的PDF。

此脚本接受三个参数。它们如下(按顺序):

  1. 输出的单页PDF的文件夹的路径
  2. 输出的单页PDF文件的共用文件名加上“%d”
  3. 需要分页的PDF的路径

此脚本调用的是64位的 ghostscript ,若你安装的是32位的版本则需要把此脚本中的 gswin64c 更改为 gswin32c

此处给出一个例子,输出的文件夹为 output (已存在),共用文件名为 common,需要分页的PDF为 pdf_in

gs_split_pdf output common%d.pdf pdf_in.pdf

注解

“%d”

如果不在共用文件名后加上“%d”,ghostscript 则不会对PDF进行分页。

6.3. pdf_to_svg.bat 详解

pdf_to_svg.bat 的内容如下:

1
2
3
4
5
6
7
@echo off
REM use pdf2svg (https://github.com/jalios/pdf2svg-windows) to convert a pdf to individual svgs

set inputfile=%1
set outputfile=%2

pdf2svg %inputfile% %outputfile% all

此脚本用于把PDF转换为SVG。

此脚本接受两个参数。它们如下(按顺序):

  1. 需要转换的PDF文件路径
  2. 输出的单页PDF文件的共用文件名加上“%d”

此脚本调用 pdf2svg 来进行文件的转换。此处给出一个例子,需要转换的PDF名为 pdf_in,输出的单页PDF的共用文件名为 pdf_out ,输出的文件夹为 out_svg (已存在)。

pdf_to_svg pdf_in.pdf .\out_svg\pdf_out%d.svg

注解

“%d”

如果不在共用文件名后加上“%d”,则只会转换PDF的第一页。

6.4. pdf_to_png.bat 详解

pdf_to_png.bat 的内容如下:

1
2
3
4
5
6
7
@echo off
REM use pdftocairo to convert a pdf into multiple pngs

set dpi=%1
set inputfile=%2

pdftocairo -r %dpi% -png %inputfile%

此脚本用于把PDF转换为PNG。此脚本会在CMD当前所在之目录创建PNG文件。

此脚本接受两个参数。它们如下(按顺序):

  1. 转换的PNG的DPI,一般为300或600。过高的DPI会令转换过程冗长。一般而言,打印需要至少300 DPI,一般600 DPI足以应付绝大部分情况。
  2. 需要转换的PDF的路径

此脚本调用 pdftocairo 来进行文件的转换。此处给出一个例子,转换的DPI为600像素,需要转换的PDF名为 pdf_in

pdf_to_png 600 pdf_in.pdf

注解

pdftocairo

pdftocairo 会自动把多页PDF转换为单页的PNG,非常方便。

注解

为了方便,用户可以把 util 文件夹的路径加入到系统环境变量 Path 中,这样就可以直接调用脚本,而不需要在命令中指定 util 文件夹的路径。